모던 C++ (Modern C++)
C++ 표준 순서
1) C++98/03
2) C++11/14 (모던 C++의 시작)
3) C++17
4) C++20/23
source: https://www.modernescpp.com/index.php/what-is-modern-c
C++98/02
- 1998년에 표준화, 2003년에 수정 적용
C++ 최초의 표준화. 일반적인 C++ 코딩 내용이 대부분 포함.
C++11/14
- 2011년 표준화, 2014년 추가로 개선되어 발표
이때부터 모던 C++이라고 불리게 됨.
- C++11 표준을 시작으로 여러 최신 기능들을 추가. C++11 및 그 이후의 표준인 C++14, 17 등을 묶어 모던 C++이라고 부름.
C++17
- 이전 버전에서 C++ STL(Standard Template Library)의 추가 수정, 알고리즘 헤더의 몇몇 알고리즘 명시적 병렬화 기능 문법적 개선.
- 제거된 기능: std::auto_ptr, std::random_shuffle, 오래된 함수 어댑터와 같이 사용 중단된 표준 라이브러리의 타입과 함수 제거
C++ 20/23
모던 C++의 특징
reference: https://flower0.tistory.com/484
RAII와 스마트 포인터
- C 스타일 프로그래밍의 가장 큰 문제점은 메모리 누수(memory leak)
- 힙 공간에 할당받은 메모리를 해제하지 않았을 때 발생
- 모던 C++은 RAII(Resource Acquisition is Initialization) 원칙을 강조함
- RAII: 모든 자원들은 객체에 의해 소유되어야 함. 객체 생성 시 생성자에서 자원을 생성하거나 할당받고, 소멸자에서 이 자원을 해제함
- 이 원칙을 통해 자원을 소유한 객체가 범위에서 벗어나면 그 자원을 적절히 OS로 반환함을 보장
- RAII 원칙을 위해 C++ STL은 스마트 포인터(smart pointer)을 제공함
- std::unique_ptr, std::shared_ptr, std::weak_ptr
- 스마트 포인터는 메모리 할당과 해제를 직접 다룸
"모던 C++ (3): 스마트 포인터": https://velog.io/@jinh2352/%EB%AA%A8%EB%8D%98-C-3-%EC%8A%A4%EB%A7%88%ED%8A%B8-%ED%8F%AC%EC%9D%B8%ED%84%B0