sizeof(className)-给出实际对象的大小,因为它不包括静态变量和存储在静态位置的虚拟表的大小。
试图找出gcc编译器中的VTABLE占用了多少内存。据我了解,VTABLE是类属性,而Vpointer是对象属性。因此,如果有3个类的实例,则将有3个虚拟指针。另一方面,只有1个VTABLE。 现在,当我们执行sizeof(className)时-实际上,它给出的是对象的大小,而不是sizeof类。我之所以这样说是因为它不包括VTABLE的大小,而是包括虚拟指针的大小。 另外,它不包括静态变量的大小,静态变量是类属性,而不是对象属性。
class A
{
public:
virtual void f(){}
virtual void g() {}
static int a;
};
由于一个虚拟指针,此处的大小为4个字节。 Sizeof(A)-告诉对象A的大小,而不是类A的大小。
期望-找出类而不是对象的大小。