我无法理解virtual
C++ 中关键字的用途。我非常了解 C 和 Java,但我是 C++ 新手
来自维基百科
在面向对象的编程中,虚函数或虚方法是一种函数或方法,其行为可以在继承类中被具有相同签名的函数覆盖。
virtual
但是我可以在不使用关键字的情况下覆盖如下所示的方法
#include <iostream>
using namespace std;
class A {
public:
int a();
};
int A::a() {
return 1;
}
class B : A {
public:
int a();
};
int B::a() {
return 2;
}
int main() {
B b;
cout << b.a() << endl;
return 0;
}
//output: 2
正如您在下面看到的,函数 A::a 被 B::a 成功覆盖,而不需要virtual
让我更加困惑的是这个关于虚拟析构函数的声明,也来自维基百科
如以下示例所示,对于 C++ 基类,具有虚拟析构函数非常重要,以确保始终调用来自最派生类的析构函数。
那么virtual
还告诉编译器调用父级的析构函数吗?这似乎与我最初对virtual
“使函数可覆盖”的理解有很大不同