注意:该作者博客已迁移至https://buxianshan.xyz
一个空类包含什么呢?
class Empty{};
和这样写是一样的(默认包含六个函数)
class Empty {
public:
Empty(); // 缺省构造函数
Empty(const Empty& rhs); // 拷贝构造函数
~Empty(); // 析构函数
Empty& operator=(const Empty& rhs); // 赋值运算符
Empty* operator&(); // 取址运算符
const Empty* operator&() const; //取址运算符 const
};
但是,C++默认生成的函数,只有在被需要的时候,才会产生。即当我们定义一个类,而不创建类的对象时,就不会创建类的构造函数、析构函数等。
下面的代码将使得每个函数被生成
const Empty e1; // 缺省构造函数
Empty e2(e1); // 拷贝构造函数
e2 = e1; // 赋值运算符
Empty *pe2 = &e2; // (非const)取址运算符
const Empty *pe1 = &e1; // (const)取址运算符
感谢:
- 李昕老师(CUMT)
- http://www.cnblogs.com/timesdaughter/p/6684633.html