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

标签 c++ copy-constructor

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

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

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

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

最佳答案

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

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

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

相关文章:

c++ - 如何检测窗口当前正在运行模态对话框?

c++ - Qt 文件系统浏览器 : How to change root directory and update view

c++ - 在 C++ 中重载位移运算符

c++ - C++11 中的复制初始化对 move 有效吗?

c++ - 初始化没有复制构造函数的成员聚合类型

c++ - POD 类型的填充字节是否被复制?

c++ - Dev-C++ 为 Makefile.win 和 g++ 停止提供错误

c++ - 在 x86 程序集中更改数组的值(嵌入在 C++ 中)

c++ - 既不调用复制也不移动构造函数

c++ - 解释复制构造函数示例