c++ - 找出多态对象的大小

标签 c++ polymorphism sizeof

我有一个指向多态对象的指针 Base* base_ptr。是否可以找出所述对象的动态类型的大小?

AFAIK,sizeof(*base_ptr) 产生 base_ptr 静态类型的大小。我开始怀疑这是不可能的,但也许我忽略了一些东西。

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

编辑:sizeof(base_ptr) -> sizeof(*base_ptr)

最佳答案

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

关于c++ - 找出多态对象的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8122763/

相关文章:

c++ - 如何解释 sizeof(std::vector<int>) 的值?

polymorphism - "Polymorphism is not the same as method overloading or method overriding."

c++ - 多态性和覆盖 C++ 类模板中的方法

c++ - 具有灵活数组成员的结构的大小

c++ - 如何将变量放入数组

java - java中的虚方法调用-多态性

c - sizeof 运算符如何在 C 中工作?

c++ - 是否有一个特殊的地方来存储标准 C++ 中的配置

c++ - 如何每次都实现move构造函数来避免深拷贝?

c++ - std::function 与自动调用不同的重载