1、当定义一个空的类型,没有任何成员变量或者成员函数,对该类型求sizeof,得到的结果为 1 的原因是当我们声明该类型实例的时候,它都必须在内存中占有一定的空间,至于占多少空间,由编译器决定,VS中每个空类型的实例要占用1个字节的空间。
2、在上述类型中添加一个析构函数和一个构造函数,则再求sizeof的结果是 1 ,原因是调用析构函数和构造函数只需要知道函数的地址即可,而这些函数的地址只与其类型相关,而与类型的实例无关。
3、如果把析构函数标记为虚函数,则求sizeof ,在32位机器上得到 4 , 在64位机器上得到的是 8 。原因是,编译器一旦发现一个类型中有虚函数,就会为该类型生成一个虚函数表,并在该类型的每一个实例中添加一个指向虚函数表的指针。