C++:何时隐式复制类?

标签 c++ copy-constructor

什么时候在 C++ 中隐式复制类?

我有一个包含 unique_ptr 的类,因此无法安全地复制,因此,我通过创建 X(X&) 的私有(private)版本来禁用该类上的复制构造函数X& 运算符 = X&.

我立即遇到了无法返回此类实例的问题,因为返回实际上会生成该实例的拷贝。

还有其他需要注意的情况吗?

最佳答案

返回并不复制实例,而是移动实例。您只是忘记提供移动构造函数。此外,在大多数情况下,在标准容器中使用类时,类现在会被移动,而以前它们是被复制的。

简而言之,提供一个移动构造函数和移动赋值运算符(最好是交换),您应该会发现几乎所有拷贝都是隐式的情况,它们现在都是移动。

关于C++:何时隐式复制类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7290078/

相关文章:

c++ - 为什么此代码会导致 SIGSEGV(gcc 编译器、cygwin 下的 Android NDK 工具链)?

c++ - namespace 函数未链接

c++ - 在 C++ 中将一个类对象分配给另一个类对象

java - 复制构造函数和多态性

c++ - 如何使用条件运算符?

c++ - 为什么使用英特尔 C++ 编译器时 NaN - NaN == 0.0?

c++ - 复制构造函数不从类对象中获取数组大小

c++ - 抽象类中的复制控件

c++ - 运算符重载和命名空间

c++ - 复制构造函数被触发但是如何触发?