본문 바로가기
언어(Language)/C++

[C++] C++ 개요

by 송기동 2024. 12. 21.
728x90

C++ 언어란?

  • 1979년 Bell 연구소의 비야네 스트롭스트룹(Bjarne Stoustrup)이 C 언어를 확장하여 만든 프로그래밍 언어
    • C with Classes
    • 1983년 부터 C++ 라는 이름을 사용함
  • 주요 확장 내용
    • 객체지향 프로그래밍(클래스, 상속, 다형성 등), 일반화 프로그래밍(템플릿), 예외처리가 있음

 

C++ 언어의 표준

국제표준화기구(ISO)의 C++ 표준화 연혁

 

  • C++98
    • C++의 첫 번째 표준
    • 객체지향 프로그래밍(OOP) 지원
    • 표준 템플릿 라이브러리(STL) 도입 (벡터, 리스트, 맵 등)
    • 예외 처리 (try, catch, throw) 표준화
    • 네임스페이스(namespace) 도입
  • C++03
    • C++98의 결함 수정 및 소규모 개선 C++98 과 함께 "레거시 C++" 이라고 부름
    • 템플릿 관련 버그 수정
    • 표준 문서의 명확성 개선
    • 새로운 기능 추가는 없었음
  • C++ TR1
    • 2005년에 등장한 TR1(Technical Report 1) C++ 라이브러리 확장 기능에 대한 문서
    • 공식 표준은 아니지만, 여기에 등장한 거의 모든 컴포넌트가 C++11에 포함됨 
      • 정규표현식, 스마트 포인터, 해쉬 테이블, 난수, 시간 등에 대한 라이브러리 정의
      • ↑ 부스트(Boost) 라이브러리에 토대를 두고 있음
    • C++ 표준 라이브러리가 진화하는 과정에서 중요한 전환점 역할
  • C++11
    • 대대적인 업데이트로 "모던 C++"의 시작점
    • 람다 함수: 함수형 프로그래밍 지원
    • 스마트 포인터: std::shared_ptr, std::unique_ptr
    • 자동 타입 추론: auto 키워드
    • 이동 시멘틱스: 성능 최적화 (std::move)
    • 범위 기반 for 루프: 간단한 컨테이너 순회
    • 멀티스레드 지원: std::thread, std::mutex
  • C++14
    • C++11의 보완판
    • 제네릭 람다: 람다 함수의 매개변수 타입 자동 추론
    • std::make_unique: 스마트 포인터 생성 편의성
    • 컴파일 타임 계산 강화: constexpr 기능 확장
  • C++17 
    • 사용성과 성능 향상에 초점
    • 구조적 바인딩: 다중 반환값 처리 간소화
    • std::optional: 값이 없을 수 있는 변수를 표현
    • std::variant: 타입 안전한 유니언
    • 파일 시스템 라이브러리: std::filesystem
    • 병렬 알고리즘: std::execution으로 병렬 실행 지원
  • C++20
    • 대규모 업데이트로 더욱 강력한 기능 추가
    • 컨셉(Concepts): 템플릿 제약 조건 명시
    • 코루틴(Coroutines): 비동기 프로그래밍 지원
    • 범위 라이브러리: std::ranges로 컨테이너 처리 간소화
    • 모듈(Modules): 헤더 파일 대체로 컴파일 속도 개선
    • 삼항 연산자 확장: spaceship operator (<=>)로 비교 간소화
728x90

'언어(Language) > C++' 카테고리의 다른 글

[C++] 주석  (0) 2024.12.23
[C++] C++ 프로그램의 작성 및 빌드  (1) 2024.12.21