C++ / 씨 플러스 플러스, 씨쁠쁠등으로 읽기도 한다.
C++는 C 언어에서 파생된 프로그래밍 언어 중 하나로, 비야네 스트롭스트룹(Bjarne Stroustrup)이 만든 객체지향 언어이다. 초창기 코드 네임은 C with Classes[1]으로. 코드 네임에서 볼 수 있듯 C 언어에 객체지향 개념을 더하는 것이 시작이었다. 문법은 C 언어와 상당히 유사하지만 실질적으론 다른 언어로서 호환되지 않는다.
특징
버전
The C++ Programming Language
C++ 2.0
C++98
어떤 컴파일러를 사용하든 같은 결과를 보장하기 위해 ISO에서 제정한 최초의 C++ 표준으로, 14882:1998 라는 정식 명칭을 가지고 있다. C++98부터 namespace 개념이 추가되어 표준 라이브러리는 std 네임스페이스에 속하게 되었으며, 기존 라이브러리와 혼동을 피하기 위해 이때부터 표준 라이브러리의 헤더에서 .h가 빠지게 되었다.
C++03
C++TR1
C++11
초기 개발 명은 C++0X라고 하여 10년도 이전에 나올 것이라 예상되었으나 때를 한참 넘겨 2011년에 공개되었다. C++11에서는 다른 프로그래밍 언어에서 사용되던 편리한 문법이 많이 추가 되었다
내역
- 기존의 auto예약어의 기능이 없어지고 변수 선언시 초기화 값에 따라 변수형을 추론하여 생략을 가능하게 하였다
auto var = 1; //이 경우 var변수의 변수형은 int형이 된다.
auto var2 = new Person();//이 경우 var2의 변수형은 Person*이 된다.
- 정적 배열, vector, list클래스의 경우 for문에서 자바의 for문과 같이 사용할 수 없다
int a[] = {1,2,3,4,5};
for(auto & it : a)
{
std::cout<<it<<endl;
}
- std::thread클래스가 추가되었고 멀티 스레딩을 지원하는 메모리 모델로 수정되었다. 또한 동기화 지원을 위한 std::mutex가 추가되었다.
- 레퍼런스 카운드을 이용한 메모리 클래스인 std::shared_ptr와 std::weak_ptr가 추가되었다. 또한 std::auto_ptr은 비추천으로 바뀌었다.
- 람다식및 익명함수가 추가되었다.
- 기존의 함수포인터를 대체하는 std::function클래스가 추가되었다.
- 가비지 컬렉션에 대한 내용이 표준에 추가되었다, 하지만 어떠한 컴파일러도 구현하지 않았다.
C++14
C++14는 C++11의 마이너 업그래이드이다.