C++ 최종 수정일 2026-06-19 01:54 조회수 8
대시보드

C++

기본 정보

  • 이름: C++
  • 분류: 범용 프로그래밍 언어
  • 개발자: 비야네 스트롭스트룹 (Bjarne Stroustrup)
  • 최초 공개: 1985년
  • 기반 언어: C
  • 주요 용도: 게임 개발, 시스템 개발, 엔진 개발, 금융 시스템, 고성능 애플리케이션
  • 관련 주제: #C++ #객체지향 #게임개발 #시스템프로그래밍

개요

C++는 C 언어를 기반으로 객체지향 프로그래밍(OOP) 기능을 추가하여 개발된 범용 프로그래밍 언어이다.

높은 성능과 직접적인 메모리 제어가 가능하여 게임 엔진, 운영체제, 임베디드 시스템, 금융 시스템, 그래픽 프로그램 등 성능이 중요한 분야에서 널리 사용된다.

현대 C++(C++11 이후)는 스마트 포인터, 람다식, 자동 타입 추론 등 생산성과 안정성을 높이는 기능을 제공한다.


주요 특징

  • C 언어와 높은 호환성
  • 객체지향 프로그래밍 지원
  • 제네릭 프로그래밍(Template)
  • RAII(Resource Acquisition Is Initialization)
  • 높은 실행 성능
  • 메모리 직접 제어 가능
  • STL(Standard Template Library) 제공

Hello World

#include <iostream>

int main(){

    std::cout << "Hello C++" << std::endl;

    return 0;

}

변수

int age = 30;

double score = 99.5;

char grade = 'A';

std::string name = "구름";

데이터 타입

기본형

  • bool
  • char
  • int
  • float
  • double
  • long
  • long long

사용자 정의형

  • class
  • struct
  • enum
  • union

조건문

if(age >= 20){

    std::cout << "성인";

}else{

    std::cout << "미성년자";

}

반복문

for

for(int i=0;i<5;i++){

    std::cout << i;

}

range-based for

std::vector<int> nums={1,2,3};

for(auto n : nums){

    std::cout << n;

}

함수

int add(int a,int b){

    return a+b;

}

클래스

class User{

public:

    std::string name;

    int age;

};

객체 생성

User user;

user.name = "구름";

또는

User *user = new User();

생성자

class User{

public:

    User(){

        std::cout<<"생성";

    }

};

객체 생성 시 자동으로 호출된다.


상속

class Animal{

};

class Dog : public Animal{

};

객체지향 프로그래밍의 핵심 기능이다.


다형성

class Animal{

public:

    virtual void sound(){}

};

virtual 키워드를 통해 런타임 다형성을 구현할 수 있다.


Template

template<typename T>

T add(T a,T b){

    return a+b;

}

자료형에 관계없이 재사용 가능한 코드를 작성할 수 있다.


STL

대표 컨테이너

  • vector
  • list
  • deque
  • map
  • set
  • unordered_map
  • unordered_set
  • queue
  • stack

예시

std::vector<int> list;

list.push_back(10);

Smart Pointer

auto ptr = std::make_unique<User>();

대표 종류

  • unique_ptr
  • shared_ptr
  • weak_ptr

현대 C++에서는 new/delete보다 스마트 포인터 사용이 권장된다.


Lambda

auto add = [](int a,int b){

    return a+b;

};

익명 함수를 간결하게 작성할 수 있다.


Auto

auto number = 100;

컴파일러가 자료형을 자동으로 추론한다.


예외 처리

try{

    throw 1;

}catch(...){

}

예외(Exception)를 처리하여 프로그램의 안정성을 높일 수 있다.


주요 활용 분야

  • 게임 개발
  • 게임 엔진
  • Unreal Engine
  • 운영체제
  • 브라우저 엔진
  • 금융 시스템
  • CAD 프로그램
  • 3D 그래픽
  • 임베디드 시스템
  • 로봇 제어

대표 라이브러리

  • STL
  • Boost
  • Qt
  • OpenCV
  • SDL
  • SFML

대표 엔진

Unreal Engine은 대부분 C++ 기반으로 개발된다.


C++와 함께 사용하는 기술


장점

  • 매우 빠른 실행 속도
  • 객체지향 지원
  • 메모리 직접 제어 가능
  • 높은 확장성
  • 대규모 프로젝트에 적합
  • 게임 개발에 강점

단점

  • 문법이 복잡함
  • 학습 난이도가 높음
  • 메모리 관리 실수 가능
  • 템플릿 오류 메시지가 복잡할 수 있음
  • 생산성이 최신 언어보다 낮을 수 있음

실무 메모

실무에서는 다음과 같은 방식이 권장된다.

  • C++17 이상 사용
  • auto 적극 활용
  • nullptr 사용
  • 스마트 포인터 사용
  • RAII 기반 설계
  • STL 우선 활용
  • const 적극 사용
  • new/delete 직접 사용 최소화
  • clang-format으로 코드 스타일 통일
  • AddressSanitizer 등으로 메모리 오류 검사

C++가 사용되는 대표 프로젝트

  • Unreal Engine
  • Google Chrome (일부)
  • Mozilla Firefox (일부)
  • Blender
  • Adobe Photoshop (일부)
  • MySQL Server
  • LLVM/Clang

관련 문서


출처

  • ISO C++ 공식 사이트
  • cppreference C++ Documentation
  • 위키백과 「C++」