空类
1. 空类的大小是多少?
2. 编译器会给空类自动生成几个成员函数?
- 默认(缺省的)构造函数
- 析构函数
- 拷贝构造函数
- 赋值运算符重载函数
- 两个取址运算符重载函数
class Empty {
public:
Empty(){} //缺省构造函数
Empty(const Empty &rhs){} //拷贝构造函数
~Empty(){} //析构函数
Empty& operator=(const Empty &rhs){} //赋值运算符重载函数
Empty* operator&(){} //取址运算符重载函数
const Empty* operator&() const{} //取址运算符重载函数(const版本)
};
- 调用时机
Empty *e = new Empty(); //缺省构造函数
delete e; //析构函数
Empty e1; //缺省构造函数
Empty e2(e1); //拷贝构造函数
Empty e3 = e1; //拷贝构造函数
e2 = e1; //赋值运算符
Empty *pe1 = &e1; //取址运算符重载函数(非const)
const Empty *pe2 = &e2; //取址运算符重载函数(const)