C++ 虚函数
C++ 虚函数主要是解决函数继承时,被重载的方法调用的问题。这么说可能有点晕,来看看下面这个程序
#include <iostream>
using std::cout;
using std::endl;
class A {
public:
void f() {
cout << "A class function\n";
}
};
class B : public A {
public:
void f() {
cout << "B class function\n";
}
};
class C : public A {
public:
void f() {
cout << "C class function\n";
}
};
int main() {
B testb;
C testc;
A *p;
p = &testb;
p->f();
p = &testc;
p->f();
return 0;
}
输出结果
A class function
A class function
在上面这个程序中,我们定义了三个类,其中类B和类C继承自类A。然后我们用一个类A的指针变量p指向了实例testb, testc。然后调用了函数f。但是这个函数f很显然都是类A的函数。那么我们现在需要这个程序能够根据实例的类型,动态选择需要调用的f函数。那么我们只需要将函数f定义成虚函数就可以了
class A {
public:
virtual void f() {
cout << "A class function\n";
}
};
输出
B class function
C class function