什么时候在 C++ 中隐式复制类?
我有一个包含 unique_ptr 的类,因此无法安全地复制,因此,我通过创建 X(X&)
和 的私有(private)版本来禁用该类上的复制构造函数X& 运算符 = X&
.
我立即遇到了无法返回此类实例的问题,因为返回实际上会生成该实例的拷贝。
还有其他需要注意的情况吗?
最佳答案
返回并不复制实例,而是移动实例。您只是忘记提供移动构造函数。此外,在大多数情况下,在标准容器中使用类时,类现在会被移动,而以前它们是被复制的。
简而言之,提供一个移动构造函数和移动赋值运算符(最好是交换),您应该会发现几乎所有拷贝都是隐式的情况,它们现在都是移动。
关于C++:何时隐式复制类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7290078/