显式关键字,移动构造函数和复制构造函数,以及禁用移动和复制构造函数

时间:2016-12-08 14:10:45

标签: c++ constructor copy move explicit

我理解显式关键字对具有单个参数的构造函数的作用,它肯定会限制不需要的行为的可能性。我也理解移动和复制构造函数的作用。

我不明白的是,显式构造函数如何影响移动和复制构造函数,我还看到了一个可以禁用复制和移动构造函数的情况......为什么要这样做呢?这一切对我来说都很模糊。

1 个答案:

答案 0 :(得分:0)

显式复制构造函数的工作方式与显式转换构造函数的工作方式相同 - 不能隐式调用它。唯一的区别是你的对象是由什么构建的。

我也相信这种情况的使用情况非常罕见且很远。

稍微更常见的情况是删除类的复制构造函数和赋值运算符(= delete)。这对于表示唯一资源的对象很有用,因此不应复制。 std::cout是存在的对象的示例,但不应复制。