【发布时间】:2019-02-26 05:05:46
【问题描述】:
#include <iostream>
class Base {
virtual void method() {std::cout << "from Base" << std::endl;}
public:
virtual ~Base() {method();}
void baseMethod() {method();}
};
class A : public Base {
void method() {std::cout << "from A" << std::endl;}
public:
~A() {method();}
};
int main(void) {
Base* base = new A;
base->baseMethod();
delete base;
return 0;
}
我不明白为什么这段代码的输出是: 从一个 从一个 来自基地
从技术上讲,它应该只打印“from A”。
【问题讨论】:
-
不要从析构函数中调用虚方法。在这里查看这个出色的答案:link