我见过 default
在类中的函数声明旁边使用。它有什么作用?
class C {
C(const C&) = default;
C(C&&) = default;
C& operator=(const C&) & = default;
C& operator=(C&&) & = default;
virtual ~C() { }
};
原文由 Paul Manta 发布,翻译遵循 CC BY-SA 4.0 许可协议
我见过 default
在类中的函数声明旁边使用。它有什么作用?
class C {
C(const C&) = default;
C(C&&) = default;
C& operator=(const C&) & = default;
C& operator=(C&&) & = default;
virtual ~C() { }
};
原文由 Paul Manta 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答3.3k 阅读
这是一个 新的 C++11 特性。
这意味着您要使用该函数的编译器生成的版本,因此您不需要指定主体。
您也可以使用
= delete
指定您 不 希望编译器自动生成该函数。随着移动构造函数和移动赋值运算符的引入,何时生成构造函数、析构函数和赋值运算符的自动版本的规则变得相当复杂。使用
= default
和= delete
让事情变得更容易,因为您不需要记住规则:您只需说出您想要发生的事情。