C++는 1983년 Bjarne Stroustrup이 C를 기반으로 객체지향 프로그래밍을 추가해 만든 범용 언어다. 고성능이 요구되는 게임 엔진, 운영체제, 임베디드 시스템, 금융 시스템에 사용된다. 저수준 제어와 고수준 추상화를 동시에 지원한다.
C++의 주요 특징
| 특징 | 설명 |
|---|
| 다중 패러다임 | 절차적 + OOP + 함수형 + 제네릭 |
| RAII | 자원 획득은 초기화(Resource Acquisition Is Initialization) |
| 템플릿 | 컴파일 타임 제네릭 프로그래밍 |
| 스마트 포인터 | unique_ptr, shared_ptr로 자동 메모리 관리 |
| STL | 표준 템플릿 라이브러리 (vector, map, sort 등) |
클래스와 상속
cpp
# include <iostream>
using namespace std;
class Animal {
public:
string name;
Animal(string n) : name(n) {}
virtual string sound() { return "..."; } // 가상 함수
};
class Dog : public Animal {
public:
Dog(string n) : Animal(n) {}
string sound() override { return "Woof!"; }
};
int main() {
Animal* a = new Dog("Buddy");
cout << a->sound() << endl; // Woof! (다형성)
delete a;
}
스마트 포인터
cpp
# include <memory>
// unique_ptr: 소유권 독점
auto ptr = std::make_unique<int>(42);
// 스코프 벗어나면 자동 해제
// shared_ptr: 참조 카운팅
auto sp1 = std::make_shared<string>("hello");
auto sp2 = sp1; // 참조 카운트 2
// 마지막 shared_ptr 소멸 시 해제
STL
cpp
# include <vector>
# include <algorithm>
# include <map>
vector<int> v = {5, 3, 1, 4, 2};
sort(v.begin(), v.end()); // {1,2,3,4,5}
map<string, int> m;
m["Alice"] = 90;
cout << m["Alice"]; // 90
관련 개념
- •C 언어 — C++의 기반 언어
- •객체지향 프로그래밍 — C++의 핵심 패러다임
- •가비지 컬렉션 — C++은 GC 없이 RAII 사용
- •정렬 알고리즘 — STL std::sort
참고문헌
- •Stroustrup, B. The C++ Programming Language, 4th Ed. (2013)
- •Meyers, S. Effective Modern C++ (2014)