空类默认产生的成员:
(1)默认构造函数(如果没有定义其他的构造函数)
(2)拷贝构造函数
(3)=运算符
(4)取地址运算符
(5)取地址运算符 const
(6)析构函数
这里只看一下(4)和(5)
#include <iostream>
using namespace std;
class Test
{
public:
Test* operator&()
{
cout<<"AAAA"<<endl;
return this;
}
const Test* operator&() const
{
cout<<"BBBB"<<endl;
return this;
}
};
int main()
{
Test t;
Test *p = &t; //等价于t.operator&() AAAA
const Test t2;
const Test *p1 = &t2; //BBBB
return 0;
}
一个空类的大小为1,因为类需要实例化,如果没有空间的话就不能实例化对象,遵循最小原则,分配一个字节的大小空间