728x90
반응형

MOVE 2

[C++] values

C에서의 Rvalue, Lvalue는 좌측 값은 대입(assignment) 시에 왼쪽 혹은 오른쪽에 오는 식(expression)이고, 우측 값은 대입 시에 오직 오른쪽에만 오는 식이다.라고 정의하고 있지만 C++에서는 다음과 같이 정의하고 있다. 좌측 값은 어떠한 메모리 위치를 가리키는데, & 연산자를 통해 그 위치를 참조할 수 있다. 우측 값은 좌측 값이 아닌 값들이다. C++11부터는 prvalue, xvalue, glvalue가 추가되었다. C++11에서는 이러한 value들을 다음과 같이 나누었다. lvalue : identity를 가지면서 move 될 수 없는 표현식 xvalue : identity를 가지면서 move 될 수 있는 표현식 prvalue : identity를 가지지 않고 있으면서..

[C++] noexcept

C++11부터 throw()가 더 이상 사용되지 않고, noexcept 키워드가 추가되었다. noexcept 키워드는 operator의 형태로, 그리고 specifier의 형태로 제공된다. noexcept() 한정자는 모든 면에서 throw() 보다 강력하고, Stnadard library들을 사용함에 있어, noexcept 한정자는 성능 상의 추가 이득을 제공하기도 한다. noexcept(expression) noexcept 연산자는 컴파일 타임에 해당 표현식이 예외를 던지지 않는 표현식인지 체크하여 표현식이 아래의 경우 중 하나라도 포함한다면 false를 그렇지 않다면 true를 반환한다. 상수 표현식이 아닌 함수가 noexcept 키워드를 가지지 않을 경우 런타임 체크가 필요한 dynamic_cas..

728x90
반응형