使用sizeof运算符,我可以确定任何类型的大小 - 但是如何在运行时动态确定多态类的大小?
例如,我有一个指向a的指针Animal,我想得到它指向的实际对象的大小,如果它是a Cat或a ,它将是不同的Dog.有没有一种简单的方法可以做到这一点,缺少创建虚拟方法Animal::size并重载它以返回sizeof每种特定类型?
假设有类:
struct A {
int a;
virtual size_t GetMemoryUsage() const {
return sizeof(*this);
}
};
struct B : public A {
int b;
};
Run Code Online (Sandbox Code Playgroud)
并且可能存在更深层次的继承.
我想要的是有一个方法,它将返回一个对象在内存GetMemoryUsage()中占用的字节数,在这种情况下.通常它可以通过使用来实现sizeof(*this).问题是(至少AFAIU),我必须覆盖每个派生类中的方法,并实际复制粘贴其正文.我不喜欢重复的代码:)
我对么?如何通过仅从基类的方法调用它们来创建sizeof(*this)和decltype(*this)返回我想要的子类?有更优雅的解决方案吗?