라고하지, 내 환경에서 이동 생성자가 호출되지 않습니다 :C++ 이동 생성자는 다음 (빌려)의 예에서
#include <iostream>
class MyClass {
public:
MyClass()
{
std::cout << "default constructor\n";
}
MyClass(MyClass& a)
{
std::cout << "copy constructor\n";
}
MyClass(MyClass&& b)
{
std::cout << "move constructor\n";
}
};
void test(MyClass&& temp)
{
MyClass a(MyClass{}); // calls MOVE constructor as expected
MyClass b(temp); // calls COPY constructor...
}
int main()
{
test(MyClass{});
return 0;
}
내 출력은 다음과 같습니다 기본 생성자 기본 생성자 복사 생성자
Xcode 버전 9.1, 이동 생성자 rvalue 참조를 호출해야 shouldnt? 내가 여기서 무엇을 놓치고 있니?
존.
'MyClass && temp'는 실제로 MyClass b (temp);를 호출 한 시점의 좌변 값입니다 (이름이 있기 때문에); rvalue 생성자를 호출하려면 * move * this ('MyClass b (std :: move (temp));') –