自动生成默认/复制/移动ctor和复制/移动赋值操作符的条件?

自动生成默认/复制/移动ctor和复制/移动赋值操作符的条件?

我希望在编译器通常自动生成默认构造函数、复制构造函数和赋值操作符的条件下刷新内存。

我记得有一些规则,但我不记得,也找不到有信誉的资源在网上。有人能帮忙吗?


白猪掌柜的
浏览 682回答 3
3回答

神不在的星期二

在下面,“自动生成”意味着“隐式声明为默认,但未定义为删除”。在某些情况下,特殊成员函数被声明,但定义为已删除。如果没有用户声明的构造函数,则自动生成默认构造函数(§12.1/5)。如果没有用户声明的移动构造函数或移动赋值操作符,则自动生成复制构造函数(因为C+03中没有移动构造函数或移动赋值运算符,这将简化为C+03中的“始终”)(§12.8/8)。如果没有用户声明的移动构造函数或移动赋值操作符,则自动生成复制赋值操作符(§12.8/19)。如果没有用户声明的析构函数,则自动生成析构函数(§12.4/4)。C+11及以后仅:如果没有用户声明的复制构造函数、复制赋值操作符或析构函数,以及生成的移动构造函数有效,则自动生成移动构造函数(§12.8/10)。如果没有用户声明的复制构造函数、复制赋值操作符或析构函数,并且生成的移动赋值运算符是有效的(例如,如果它不需要分配常量成员),则自动生成移动赋值操作符(§12.8/21)。
打开App,查看更多内容
随时随地看视频慕课网APP