C++ 找出多态对象的大小

C++ 找出多态对象的大小,c++,polymorphism,sizeof,C++,Polymorphism,Sizeof,我有一个指向多态对象的指针。是否有可能找出所述物体的动态类型的大小 好的,sizeof(*base\u ptr)yildsbase\u ptr的静态类型的大小。我开始怀疑这是不可能的,但也许我忽略了什么 注意:我知道我可以在我的类型层次结构中添加一个返回大小的虚拟函数,但在我的例子中,这不是一个理想的解决方案 编辑: sieOf(BaseTypTR)< /> > >代码> siZeof(*BaseTypTR)< /Calp>> P>不,至少在一个可移植的方式中,C++不能这样做。最好的办法是在每

我有一个指向多态对象的指针。是否有可能找出所述物体的动态类型的大小

好的,
sizeof(*base\u ptr)
yilds
base\u ptr的静态类型的大小。我开始怀疑这是不可能的,但也许我忽略了什么

注意:我知道我可以在我的类型层次结构中添加一个返回大小的虚拟函数,但在我的例子中,这不是一个理想的解决方案


<>编辑:<代码> sieOf(BaseTypTR)< /> > >代码> siZeof(*BaseTypTR)< /Calp>

> P>不,至少在一个可移植的方式中,C++不能这样做。最好的办法是在每个类中实现
getSize()
成员函数。

是。您可以在基类中实现一个虚拟函数,该函数返回以下大小:

class Base
{
   virtual int size() { return sizeof(Base); }
};
class Derived : public Base
{
   virtual int size() { return sizeof(Derived); }
};

//......
Base* b = new Derived;
int size = b->size(); //will call Derived::size() and return correct size

如果可能的话,您可以使用,正如我在这里所描述的:

sizeof(base_ptr)
提供指针的大小,而不是任何类的大小。看起来即使是特定于g++的指针也没有提供此信息。