而接下来,向大家介绍 复制构造函数 ——它的作用就是用一个已有的对象,来执行一个新的对象的构造。
在中clone(),*this是对 的左值引用,因此您正在从 (对的左值引用) (在 内部)A构造a ,因此您正在使用 的隐式声明的复制构造函数:AAstd::make_uniqueA A(A const&); Run Code Online (Sandbox Code Playgroud) 我很困惑类A有一个虚拟析构函数virtual ~A(){},编译器将不再生成复制构造函数。那么为什么...
通过值传递 unique_ptr 可以清楚地表明构造函数将对象的所有权从调用者手中夺走。此外,由于编译器需要明确的 std::move ,因此语义在代码中清楚地记录。也就是说,用户很清楚 unique_ptr 由于显式 std::move 被构造函数调用无效。 原文由 ParadoxFox 发布,翻译遵循 CC BY-SA 4.0 许可协议 ...