【发布时间】:2019-06-21 02:26:02
【问题描述】:
在整个网络上,以及在 Bjarne Stroustrup 的 C++ 书中,我都看到诸如“如果基析构函数被声明为虚拟,那么它会被派生类的析构函数覆盖”这样的语句。
但是,为什么它被称为覆盖?它与覆盖函数的“通常”方式略有不同吗?通常,我指的是派生类中的典型虚函数,与基类中的方法签名共享相同的方法签名。在这种通常情况下,根据指针指向的实际对象,无论是基础版本还是派生版本都将被忽略......让我们不要详细讨论通常意义上的覆盖如何工作。
但在析构函数的情况下,基础析构函数最终会被调用,无论如何。而且,它的名字也不同。为什么又叫覆盖呢?
【问题讨论】:
标签: c++11 overriding virtual-destructor