自动生成默认/复制/移动ctor和复制/移动赋值操作符的条件?我希望在编译器通常自动生成默认构造函数、复制构造函数和赋值操作符的条件下刷新内存。我记得有一些规则,但我不记得,也找不到有信誉的资源在网上。有人能帮忙吗?
3 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
如果没有用户声明的构造函数,则自动生成默认构造函数(§12.1/5)。 如果没有用户声明的移动构造函数或移动赋值操作符,则自动生成复制构造函数(因为C+03中没有移动构造函数或移动赋值运算符,这将简化为C+03中的“始终”)(§12.8/8)。 如果没有用户声明的移动构造函数或移动赋值操作符,则自动生成复制赋值操作符(§12.8/19)。 如果没有用户声明的析构函数,则自动生成析构函数(§12.4/4)。
C+11及以后仅:
如果没有用户声明的复制构造函数、复制赋值操作符或析构函数,以及生成的移动构造函数有效,则自动生成移动构造函数(§12.8/10)。 如果没有用户声明的复制构造函数、复制赋值操作符或析构函数,并且生成的移动赋值运算符是有效的(例如,如果它不需要分配常量成员),则自动生成移动赋值操作符(§12.8/21)。
- 3 回答
- 0 关注
- 681 浏览
添加回答
举报
0/150
提交
取消