连接:条款五
1.空类占几个字节及里面有什么
常见面试题:“一个空类的大小是多少”
答:一字节(为了占位做标记)
空类编译器会默认生成四大类:默认构造函数,析构函数,拷贝构造函数和赋值函数
//表面上只写了
Class EmptyClass
{
};
//暗地里编译器生成
Class EmtpyClass
{
public:
// 构造函数
EmtpyClass(){}
// 析构函数
~EmptyClass(){}
// 拷贝构造函数
EmptyClass(const EmptyClass& obj)
{
…
}
// 赋值运算符重载
EmptyClass& operator= (const EmptyClass& obj)
{
…
}
};
2.什么时候调用拷贝构造函数或赋值函数
看有没有新对象的产生
EmptyClass a(b); // 调用的是拷贝构造函数
EmptyClass a = b; // 调用的是拷贝构造函数
EmptyClass a;
a = b; // 调用的是赋值运算符
例子1,2都是有新对象产生,顾拷贝构造函数。例三是先生成了对象a再赋值,顾调用赋值运算符