[모던 C++] C++ 표준화 버전과 모던 C++ 특징

Jin Hur·2021년 8월 12일
0

C++

목록 보기
6/18

모던 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

0개의 댓글