C + + (현대 C++)를 다시 시작
C + +를 사용 하는 세계에서 가장 널리 사용 되는 프로그래밍 언어 중 하나입니다.잘 작성 된 c + + 프로그램은 빠르고 효율적입니다.광범위 한 응용 프로그램을 만드는 데 사용할 수 있으므로 언어는 다른 언어 보다 더 유연입니다-재미 있고 흥미로운 게임, 고성능 과학 소프트웨어 장치 드라이버, 포함 된 프로그램과 Windows 클라이언트 응용 프로그램에서.20 년 이상 c + + 이러한 및 다른 많은 문제를 해결 하기 위해 사용 되었습니다.없습니다 알 수 있습니다 점점 더 많은 c + + 프로그래머 어제 dowdy C 스타일 프로그래밍을 접고 있는 최신 c + + 대신 donned가 있다는 것입니다.
원래 c + +에 대 한 요구 사항 중 하나는 C 언어와의 호환성을 했습니다.그 이후 여러 번의 반복을 통해 c + + 발전 합니다.-C 클래스 다음 원래 c + + 언어 사양 및 많은 후속 개선 후.이러한 특성으로 인해 c + + 패러다임 프로그래밍 언어로 라고도 합니다.C + +의 원시 포인터, 배열, null로 끝나는 문자열, 사용자 지정 데이터 구조 및 성능이 뛰어난 될 수 있지만 버그 및 복잡성도 생성할 수 있습니다 다른 기능이 포함 순수 절차적 C 방식의 프로그래밍을 수행할 수 있습니다.C 스타일의 프로그래밍을 살펴보고자 다음과 같은 fraught 이기 때문에 c + +에 대 한 창립 목표 중 하나 모두 형식이 안전 하 고 쉽게 작성 하 고, 확장 및 유지 프로그램을 만드는 것 이었습니다.초기에 c + + 개체 지향 프로그래밍과 같은 프로그래밍 패러다임을 채택.년에 걸쳐 함께 매우 테스트 표준 라이브러리 데이터 구조와 알고리즘의 언어 기능이 추가 되었습니다.이 최신 c + + 스타일 했으면 이러한 추가 기능입니다.
최신 c + +를 강조 합니다.
스택 기반 범위 대신 힙 또는 정적 전역 범위입니다.
명시적 형식 이름 대신 자동 형식 유추 합니다.
스마트 포인터 대신 원시 포인터입니다.
std::string및 std::wstring 형식 (참조 <string>) 대신 원시 char[] 배열입니다.
표준 템플릿 라이브러리 (STL) 컨테이너와 같은 vector, list, 및 map 원시 배열 또는 사용자 지정 컨테이너를 대신 합니다.<vector>, <list> 및 <map>를 참조하십시오.
STL 알고리즘 이란 코딩 하는 대신 수동으로 합니다.
예외 보고서 및 핸들 오류 조건입니다.
잠금 해제 STL을 사용 하 여 스레드 간 통신 std::atomic<> (참조 <atomic>) 다른 스레드 간 통신 메커니즘을 대신 합니다.
인라인 람다 함수 대신 작은 함수를 개별적으로 구현 합니다.
범위 기반 배열, STL 컨테이너를 사용 하는 보다 강력한 루프를 작성할 수 있는 루프와 Windows 런타임 컬렉션 형태로 for (for-range-declaration :expression ). 이 핵심 언어 지원의 일부입니다.자세한 내용은 범위 기반 for 문(C++)을 참조하십시오.
C + + 언어 또한 발전 하 고 있습니다.다음 코드 조각을 비교 합니다.이 일 수 c + +에서 사용 하는 방법을 보여 줍니다.
// circle and shape are user-defined types
circle* p = new circle( 42 );
vector<shape*> v = load_shapes();
for( vector<circle*>::iterator i = v.begin(); i != v.end(); ++i ) {
if( *i && **i == *p )
cout << **i << “ is a match\n”;
}
for( vector<circle*>::iterator i = v.begin();
i != v.end(); ++i ) {
delete *i; // not exception safe
}
delete p;
다음은 최신 c + +에서는 똑같은 방식입니다.
#include <memory>
#include <vector>
// ...
// circle and shape are user-defined types
auto p = make_shared<circle>( 42 );
vector<shared_ptr<shape>> v = load_shapes();
for_each( begin(v), end(v), [&]( const shared_ptr<shape>& s ) {
if( s && *s == *p )
cout << *s << " is a match\n";
} );
최신 c + +의 새/삭제 또는 명시적 예외 처리 대신 스마트 포인터를 사용할 수 있으므로 사용 하지 않아도 됩니다.사용 하는 경우는 auto 추론을 입력 하 고 람다 함수, 빨리 코드를 작성할 수 및 강화, 더 나은 이해.및 for_each 깔끔하고 사용 하기 쉽게 의도 하지 않은 오류가 보다 적게 발생 되는 for 루프.응용 프로그램을 작성 하려면 상용구 함께 최소한의 코드 줄을 사용할 수 있습니다.및 메모리 세이프와 예외 로부터 안전한 코드 확인 하 고 처리할 수 없는 할당/할당 취소 또는 오류 코드를 수 있습니다.
두 종류의 다형성을 통합 하는 최신 c + +: 통해 서식 파일의 컴파일 타임 및 런타임, 상속 및 가상화를 통해.다형성에 큰 영향을 미치는 두 가지를 함께 사용할 수 있습니다.STL 템플릿 shared_ptr 내부 가상 메서드를 사용 하 여 해당 명백히 손쉬운 형식 지우기 작업을 수행 합니다.하지만 템플릿을 더 나은 선택 될 때 가상화 다형성의 over-use 하지 않습니다.템플릿은 매우 강력한 될 수 있습니다.
C + + 참조 형식이 대부분의 형식은 며 거의 값 형식에는 특히 관리 되는 언어에서 다른 언어에서 오고 있다면 c + + 클래스 값 형식은 기본적으로 알지.하지만 이러한 개체 지향 프로그래밍을 지 원하는 다형 동작을 사용 하는 참조 형식으로 지정할 수 있습니다.유용한 전망: 메모리 및 레이아웃 컨트롤, 참조 형식에 대 한 자세한 내용은 기본 클래스 및 가상 함수 다형성을 지원 하도록에 대 한 자세한 되는 값 형식입니다.기본적으로 값 형식을 복사할 수 있습니다-각 복사 생성자와 복사 대입 연산자가 있습니다.참조 형식을 지정 하는 경우 클래스를 복사할 수 없는 확인-복사 생성자와 복사 대입 연산자를 사용 하지 않도록 설정-는 다형성을 지원 가상 소멸자를 사용 합니다.값 형식을 복사 하는 경우는 개별적으로 수정할 수 있는 두 개의 독립 변수 값 제공 내용에 대 한 이기도 합니다.하지만 참조 형식의 id — 개체의 종류입니다-및 이런이 이유로 다형 형식으로 라고도 합니다.
다시 전원이 킹 때문에 c + +는 부흥기를 발생 했습니다.Java 및 C#과 같은 언어는 프로그래머 생산성 중요 하지만 기능과 성능을 가장 중요 한 때 제한 표시 하면 유용 합니다.특히 하드웨어 제한 된 장치에 전원에 대 한 고효율 최신 c + + 아무 것도 없습니다.
뿐만 아니라 언어 현대, 너무 개발 도구입니다.Visual Studio강력 하 고 효율적인 개발 사이클의 모든 부분을 만듭니다.여기 IDE 향상 된 IntelliSense와 같은 응용 프로그램 수명 주기 관리 (ALM) 도구, 빌드, 디버깅, XAML 등 편리한 도구 메커니즘 및 기타 여러 가지 도구.
이 설명서의 파트 기사 고급 지침과 가장 중요 한 기능에 대 한 모범 사례와 최신 c + + 프로그램을 작성 하는 방법을 제공 합니다.