相关疑难解决方法(0)

确定多态C++类的大小

使用sizeof运算符,我可以确定任何类型的大小 - 但是如何在运行时动态确定多态类的大小?

例如,我有一个指向a的指针Animal,我想得到它指向的实际对象的大小,如果它是a Cat或a ,它将是不同的Dog.有没有一种简单的方法可以做到这一点,缺少创建虚拟方法Animal::size并重载它以返回sizeof每种特定类型?

c++ polymorphism sizeof

5
推荐指数
1
解决办法
1687
查看次数

在派生类中sizeof(*this)和decltype(*this)

假设有类:

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)返回我想要的子类?有更优雅的解决方案吗?

c++ inheritance sizeof decltype c++11

3
推荐指数
1
解决办法
332
查看次数

标签 统计

c++ ×2

sizeof ×2

c++11 ×1

decltype ×1

inheritance ×1

polymorphism ×1