如果自己不声明, 编译器就会暗自为class创建一个default构造函数、一个copy构造函数、一个copy assignment操作符(代码合法有意义时编译器才会生成),以及一个析构函数
class Empty { };
对应地有
class Empty {
public:
Empty(){...}
Empty(const Empty& rhs) {...}
~Empty(){...}
Empty& operator=(const Empty& rhs) {...}
};
注:
- 只有当这些函数被调用的时候,编译器才创建。
- 若已经声明了对应的函数,编译器不再创建default函数。
内含引用成员或const成员的类,如需支持赋值操作,需自定义赋值操作符。
如基类将赋值操作声明为private,编译器拒绝为其子类生成赋值运算函数。