2015-09-22 26 views
0

以下是在C/C++定义的两种结构:为什么相同结构的尺寸对象

struct a 

    {   
     static int i; 
     void fun() {int i;} 

    }; 
    struct b 
    { 

     static int i;  
    }; 
    a obj1; 
    b obj2; 

为什么既OBJ1的的sizeof和obj2的是相同的?

+2

他们为什么不呢?他们都是空班。顺便说一句,你的类定义都缺少一个尾随的';'。 – juanchopanza

+0

'void fun(){int i;}'ist只是一个成员函数的声明。这根本不占用空间。 –

+0

@MichaelWalz它也是*定义*,所以它可能占用空间,尽管不在课堂上。 – juanchopanza

回答

3

非虚拟成员函数和静态成员不会影响对象的大小,因为它们不存储在对象内部。

添加一个或多个虚拟成员函数会将大小增加一个实现特定的数量,通常是一个指针的大小。