Dom*_*lli 5 c++ copy-constructor move-semantics
我的问题是要了解这两个构造函数究竟是如何工作的.我有这门课:
class moveClass
{
int variabile;
public:
moveClass(){}
//move constructor
moveClass(moveClass && arg)
{
cout<<"Call move constructor"<<endl;
variabile = arg.variabile;
}
//copy constructor
moveClass(const moveClass & arg)
{
cout<<"Call copy constructor"<<endl;
variabile = arg.variabile;
}
};
Run Code Online (Sandbox Code Playgroud)
根据我的理解,当我实例化该类的新对象时,将根据参数的类型调用构造函数.
移动构造函数的优点是当rvalue用于实例化对象时,该对象不会被复制,而只是被移动.
1 moveClass a;
2 moveClass b = a;
3 moveClass c = std::move(a);
Run Code Online (Sandbox Code Playgroud)
考虑到这个例子,我可以说当我实例b时,a被复制,然后分配给b?
换句话说,直到第2行,我将在内存中有3个对象:a,b和a_copy.
而第3行只会创建c对象而没有新的复制对象.
基本上在这三行的末尾,我将在内存中有4个对象.它是否正确?
构造函数的代码也是一样的,所以我希望唯一的区别是传递的参数的类型.