相关疑难解决方法(0)

何时使用虚拟析构函数?

我对大多数OO理论有了深刻的理解,但让我困惑的一件事是虚拟析构函数.

我认为无论什么以及链中的每个对象,析构函数总是会被调用.

你什么时候打算让它们成为虚拟的?为什么?

c++ polymorphism shared-ptr virtual-destructor

1420
推荐指数
13
解决办法
66万
查看次数

在派生类中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
查看次数