面试题:新建一个C++的空类,会产生那些函数。
class Empty{
};
编译器处理后:生成如下:
class Empty{
public:
Empty();//构造函数
Empty(const Empty&);//拷贝构造函数
~Empty();//析构函数
Empty& opteror=(const Empty&);//赋值运算符
Empty* opteror&();//取址运算符
const Empty* opteror&() const;//取址运算符 const
};
constructor和destructor,这两者暂且不详细。
为何需要设置copy constructor(拷贝构造)和copy assignment operator(赋值运算符)呢?
回答:改变“成员逐一初始化”的默认行为(造成此影响主要是析构函数)
设计场景:根据此class之上进行“成员逐一初始化”的行为模式是否合适?
- 成员有reference的,很有可能是需要设计的。