类的函数声明后的“默认”是什么意思?

新手上路,请多包涵

我见过 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 许可协议

阅读 352
1 个回答

这是一个 新的 C++11 特性

这意味着您要使用该函数的编译器生成的版本,因此您不需要指定主体。

您也可以使用 = delete 指定您 希望编译器自动生成该函数。

随着移动构造函数和移动赋值运算符的引入,何时生成构造函数、析构函数和赋值运算符的自动版本的规则变得相当复杂。使用 = default= delete 让事情变得更容易,因为您不需要记住规则:您只需说出您想要发生的事情。

原文由 Peter Alexander 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题