class Empty
{
};
如上的一个空类;
我们知道该类中没有任何成员,但是编译器回自己生成一些默认的函数。
比如说:(1)默认的构造函数和复制构造函数,它们被用于类的对象的构造过程
(2)析构函数,被用于同类的对象间赋值过程
(3)赋值函数
(4)取值运算,用于对类的对象进行取地址的函数
如下面代码所示:
如下代码:class Empty
{
public:
Empty(); // 缺省构造函数
Empty( const Empty& ); // 拷贝构造函数
~Empty(); // 析构函数
Empty& operator=( const Empty& ); // 赋值运算符
Empty* operator&(); // 取址运算符
const Empty* operator&() const; // 取址运算符 const
};
ps:其中两个代码的 sizeof()都为1,我们代码2所加入的析构函数构造函数等,调用它只需要知道
函数的地址就可以,但是这些函数的地址只和类型有关,和实例无关,并不会改变字节大小。