条款05 关于c++ 默默调用和编写了那些函数
一个类有哪些基本函数的问题
class empty{
empty();
~empty();
empty(empty& e);
empty& operator=(const empty& e);
}
- 基本构造函数
empty();
\ - 析构函数
~empty();
- copy构造函数
empty(empty& e);
- 赋值函数
empty& operator=(const empty& e);
上面这些函数如果没有定义的话,会自动生成。而且只有在其被调用的时候,编译器才会自动帮忙创建
注意:如果类里面本省是有其他构造函数的,那么编译器不会自动帮你创建一个default 构造函数。
编译器拒绝生成copy构造函数和赋值构造函数的情况
如果一个类中如果他的成员变量存在引用,则编译器不会自动创建一个copy构造函数和赋值构造函数。
因为引用在创建了初始值之后,就不能改变他的指向。所以这种情况需要自己自定义copy构造函数和赋值构造函数。