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