#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;
}
我不明白为什么这段代码的输出是: 来自A 来自A 从基地
从技术上讲,它应该只打印“来自 A”。
最佳答案
它叫做 Upcast ,请查看链接中的示例以获取更多信息。第一个“来自 A”发生在您执行时:
base->baseMethod();
调用A的析构函数时打印第二个“from A”,调用Base的析构函数时打印“from Base”。
关于C++(类和指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52449635/