提问:关于获取对象指针所指对象的大小问题
大家好,问题是这样的,基类对象指针与派生类对象指针均由派生类对象进行实例化,在用sizeof运算符计算两个指针解引用情况下的大小时,得到了不同的结果,为何二者指向相同的派生类对象,解引用后计算的大小会不相同呢,谢谢(大小分别是16、20字节)。
ClassA a;//基类对象
ClassB b;//派生类对象
ClassA *pClassA = &b;
ClassB *pClassB = &b;
cout << sizeof(*pClassA) << endl;
cout << sizeof(*pClassB) << endl;
cout << &(*pClassA) << endl;
cout << &(*pClassB) << endl;
[解决办法]
sizeof 计算的是静态类型的大小。
[解决办法]
class A
{
public :
virtual size_t getSize( )
{
return sizeof( *this );
}
private :
int a = 10;
};
class B : public A
{
public :
virtual size_t getSize( ) override
{
return sizeof( *this );
}
private :
int b = 20;
};
class C : public B
{
public :
virtual size_t getSize( ) override
{
return sizeof( *this );
}
private :
int c = 30;
};
++
这种方法很好啊!