【发布时间】:2017-11-11 07:36:35
【问题描述】:
我正在查看下面提到的一段代码,发现子类中的方法是非虚拟的,但该方法仍然被其基类指针调用。谁能告诉我为什么……??
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();
getchar();
return 0;
}
输出 - 来自 A
【问题讨论】:
-
virtual关键字在派生类中是可选的。 -
虚拟一次 - 永远虚拟...没有办法“去虚拟化”方法。
-
这是否意味着子类中的虚拟关键字是可选的?
标签: c++ inheritance polymorphism overriding virtual-functions