User:Sysroad/cpp/language

C++ 언어 구조의 간단한 참조 입니다.

조건문
조건문은 주어진 표현식 값에 따라 서로 다른 코드 경로를 실행합니다.


 * 은 조건부 코드를 실행합니다
 * 은 인자값에 따라 코드를 실행합니다

반복문
반복문은 코드 경로를 여러번 실행합니다.
 * 은 초기문,비교문,그리고 증감문 지정에 의한 반복을 실행합니다
 * 은 지정된 범위(range)에서의 반복문을 실행합니다
 * 은 항상 반복 전에 조건을 확인 후 반복을 실행합니다
 * 은 항상 반복 후에 조건을 확인하는 반복을 실행합니다

분기문
분기문은 다른 지역에서 프로그램 실행을 계속합니다
 * 은 반복문이 포함하는 코드 영역의 나머지 부분을 건너뜁니다.
 * 은 반복문이 포함하는 코드 영역을 탈출합니다.
 * 은 또다른 지점에서 코드의 실행을 지속합니다.
 * 은 함수가 포함하는 코드 영역의 실행을 종료합니다.

함수
동일한 코드의 경우 프로그램의 서로 다른 지점에서 재사용될 수 있습니다.
 * 은 함수를 선언합니다
 * 은 람다 함수를 선언합니다
 * 은 함수 템플릿를 선언합니다
 * 는 컴파일러가 함수 몸체를 직접 함수 호출 코드에 삽입하라는 힌트입니다
 * 는 함수가 지정된 예외만을 던지도록 선언합니다
 * 는 함수가 어떤 예외든 던질지의 여부를 선언합니다

예외
오류 상태를 알리는데 있어 예외는 함수의 반환(return codes)이나 전역 변수(global error variables)보다 더 확실하고 강력한 수단입니다.
 * 오류를 알리고 제어권을 오류 처리기(error handlers)로 전달합니다.
 * 코드의 특정 블럭으로 부터 예외의 발생을 잡아냅니다
 * 와 는 표현식이 예외를 던지는지에 대하여 정의하고 테스트합니다

네임스페이스
네임스페이스는 대형 프로젝트에서 하나의 이름 충돌 방지 기법으로 사용됩니다.
 * 는 네임스페이스를 선언합니다.
 * 는 기존에 존재하는 네임스페이스의 대체 이름을 선언합니다.

타입

 * 은 기본적인 문자, 정수, 부동 소수점 타입들을 정의합니다.
 * 은 메모리 장소를 가지고 있는 타입을 정의합니다.
 * 은 여러가지 데이터 멤버를 가지는 타입을 정의합니다.(본질적으로 클래스와 동일함)
 * 은 하나의 지정된 값만 가질 수 있는 타입을 정의합니다.
 * 은 여러가지로 묘사될 수 있는 데이터를 가지는 타입을 정의합니다.
 * 은 인자 타입들과 반환 타입으로된 함수의 호출 형태를 정의합니다.
 * 는 표현식의 타입과 동일한 타입을 정의합니다.

지정자

 * 타입들의 상수성(constness)과 최적화 금지(volatility)를 지정합니다.
 * 는 타입들의 지속성(storage duration)을 지정합니다.
 * 는 변수 또는 함수의 값이 컴파일 시간에 계산될 수 있음을 지정합니다.
 * 는 변수에 할당된 표현식으로 부터 실제 타입이 정의됨을 지정합니다.
 * 는 변수가 정해진 크기에 따라 정렬되어 저장되야함을 지정합니다.

초기화
명명된 변수가 선언되거나 임시 객체가 생성되었을 때, 새로운 객체의 초기값은 다음과 같은 방식을 통해 제공됩니다:
 * 아무런 초기화 방식도 제공되지 않는 것.
 * 비어있는 괄호 형태의 초기화 방식.
 * 객체의 모든 비트를 0 으로 초기화.
 * 객체를 다른 객체로 부터 초기화.
 * 괄호 사이에 초기값이나 생성자의 인자 리스트를 제공해주는 방식.
 * 배열이나 생성자가 없는 구조체의 모든 멤버들에 대해 초기 값을 제공해주는 방식.
 * provides an arbitrary long list of values, which can initialize a or
 * initializes all constant static objects before anything else
 * binds references to objects and extend the lifetimes of the temporaries

리터럴(Literal)
리터럴은 소스코드에 이식된 상수값을 표현하는 C++ 프로그램의 토큰(token, 컴파일러의 워드 해석의 식별 단위) 이다.
 * are decimal, octal, or hexadecimal numbers of integer type.
 * are individual characters of type, , , or
 * are values of type, , or
 * are sequences of characters, which may be narrow, multibyte, or wide
 * are values of type, that is and
 * is the pointer literal which specifies a null pointer value
 * are constant values of user-specified type

표현식
An expression is a sequence of operators and operands that specifies a computation. An expression can result in a value and can cause side effects.


 * (lvalue, rvalue, glvalue, prvalue, xvalue) classify expressions by their values
 * of arguments and subexpressions specify the order in which intermediate results are obtained
 * allow the use of syntax commonly found in mathematics


 * defines the order in which operators are bound to their arguments
 * are alternative spellings for some operators

유틸리티

 * Types
 * create synonyms for types
 * create synonyms for types
 * define additional information about variables
 * Casts
 * implicit conversions from one type to another
 * conversion using C-style cast notation and functional notation
 * 메모리 할당
 * conversion using C-style cast notation and functional notation
 * 메모리 할당
 * conversion using C-style cast notation and functional notation
 * 메모리 할당

클래스

 * links to the current instance of a class in member methods
 * determine visibility of class members
 * grants access privileges to private/protected parts for non-member classes or functions
 * initialize class member data
 * initialize class member data

클래스 지정 함수 속성

 * 는 함수가 가상임을 선언합니다
 * 는 가상함수를 오버라이드한 또 다른 가상 함수임을 선언합니다.
 * 는 상속한 클래스에서 가상 함수를 오버라이드 할 수 없음을 선언합니다.
 * 는 생성자 또는 변환 연산자가 묵시적(implicit)으로 변환되는데 사용될 수 없음을 선언합니다.
 * 는 함수가 클래스 데이터를 사용할 수 없음을 선언합니다.
 * 는 멤버 함수가 오직 cv(상수나 최적화금지)한정된 객체에게 사용 되어짐을 선언합니다.

특수 멤버 함수

 * 는 객체를 기본값으로 초기화 합니다.
 * 는 객체를 다른 객체의 값으로 초기화 합니다.
 * 는 객체를 다른 객체, 임시객체, 복사 오버헤드 최소화된 값 초기화 합니다.(with the contents of other, temporary object, minimizing copying overhead)
 * replaces the contents of the object with the contents of another object
 * replaces the contents of the object with the contents of other, temporary object, minimizing copying overhead
 * 소유한 자원을 해제합니다.

템플릿
함수와 클래스들이 일반적인 타입들에 대해 동작하도록 해준다.


 * 클래스 템플릿을 선언한다.
 * 함수 템플릿을 선언한다.
 * 기존 템플릿의 특정 타입에 대한 부분을 정의한다.
 * 인스턴스화 되는 시점에서 템플릿의 동작(behavior)이 바뀐다.
 * 템플릿 내에서 타입 리스트를 사용할 수 있도록 허용한다.

시작과 종료

 * describes how static and thread-local variables are initialized
 * describes how static and thread-local variables are initialized

최적화

 * allows any code transformation that doesn't change the output
 * , including RVO and NRVO, makes pass-by-value the preferred approach in many situations.
 * makes multiple inheritance from interfaces or policy classes overhead-free and is required for standard-layout types.

그외


cpp/language cpp/language cpp/language cpp/language cpp/language cpp/language cpp/language cpp/language cpp/language