我正在浏览下面提到的一段代码,发现子类中的方法是非虚拟的,但该方法仍然被其基类指针调用。谁能告诉我为什么...... ??
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
答案 0 :(得分:1)
派生类中覆盖虚方法的方法也是virtual;它与关键字virtual
的使用与否无关。
然后Derived类中的这个函数也是虚函数(无论关键字virtual是否在其声明中使用)并覆盖Base :: vf(无论是否在其声明中使用了单词override)。