std::vector아님!!
책에 나와있는 move constructor가 작동되는 경우가
rvalue로 변수를 초기화하거나 예시)
Vector v4 = Vector(10);
함수에서 local variable을 리턴할때 맞나요? 예)
Vector return_move() {
Vector ret {0, 1};
return ret;
}
왜 둘다 move constructor가 작동하지 않을까요
move assignment는 잘 됩니다 예)
v1 = Vector(10);
출력 Move assignment: 10
v3 = return_move();
여기서는 아래를 예상햇는데
Move constructor: 10
Move assignment: 10
아래처럼 assignment만 나옵니다ㅜ
Move assignment: 10
move constructor 코드:
Vector(Vector&& v): elem{v.elem}, sz{v.sz}
{
v.elem = nullptr;
v.sz = 0;
std::cout << "Move constructor: " << sz << '\n';
}
1번은 Vector v4(10)이랑 같음. 그냥 컨스트럭터 호출한거임
2번응 RVO작동한거임. 무스컨스트럭트 보고싶으면 RVO끄는 옵션 있을거임
4번에서 무브 컨스트럭터 하려면 Vector v3 = return move() 이런식으로 되야하는데 앞서말했듯이 RVO 작동해서 무브 컨스트럭터 안보임
답변감사합니다!! RVO 찾아볼께용