우측값(rvalue)에 대하여
·
C++/Effective Modern
C++에서는 rvalue 참조(&&)와 이동연산자(move constructor 및 move assignment operator)를 통해 효율적인 메모리 관리를 할 수 있습니다. 이 글에서는 이러한 개념들을 자세히 설명하고, 이를 통해 성능 최적화 방법을 이해할 수 있도록 하겠습니다.rvalue 참조 (&&)rvalue 참조는 C++11에서 도입된 기능으로, 주로 이동생성자(move constructor)와 이동할당 연산자(move assignment operator)를 구현하는 데 사용됩니다.lvalue와 rvaluelvalue는 식별 가능한 위치를 가지는 값입니다. 예를 들어, 변수는 lvalue입니다.rvalue는 임시 값으로, 식별 가능한 위치를 가지지 않는 값입니다. 예를 들어, 리터럴이나 연산..
초기화
·
C++/Effective Modern
auto auto의 장점 : 변수 초기화 누락을 방지하고 장황한 변수 선언을 피하는 것 중괄호 초기화 의도와는 달리 함수를 선언하게 된 경험이 있다면 바로 이 부작용에 당한 것이다. 문제의 근원은 이렇다. 다음은 흔히 인수를 지정해서 생성자를 호출 하는 코드의 예이다. Widget w1(10); // 인수 10으로 Widget의 생성자를 호출 그런데 이와 거의 비슷한 구문을 이용해서 인수 없이 Widget 의 생성자 class Widget { public: Widget(); // 기본 생성자 Widget(std::initializer_list il); // std::initializer // _list 생성자 … // 암묵적 변환 }; // 함수 없음 Widget w1; // 기본 생성자를 호출 Widg..
[C++] 형식 연역 규칙
·
C++/Effective Modern
템플릿 형식 연역 규칙 template void f(ParamType param); f(expression); - 컴파일러는 expression변수를 이용하여 두 가지 형식을 연역한다. T에 대한 형식, ParamType에 대한 형식이다. 두 형식이 다를 때가 있다. ParamType이 포인터 또는 참조 형식이지만 보편 참조는 아닐 때 template void f(T& param); int x = 3;//x는 int const int cx = x;//cx는 const int const int& rx = x;//rx는 const int인 x에 대한 참조 f(x);//T는 int, param의 형식은 int&가 된다. f(cx);//T는 const int, param의 형식은 const int& f(rx);..