总结自:https://blog.csdn.net/haoel/article/details/1948051/
https://blog.csdn.net/qianghaohao/article/details/51356718
编译器:VS2017
一、虚函数
当我们使用基类的引用或者指针调用一个虚成员函数时会执行动态绑定,直到运行时才知道到底调用了哪个版本的虚函数,被调用的函数是与绑定到指针或者引用上的对象的动态类型相匹配的那一个。所有虚函数都必须有定义。虚函数的作用主要是实现多态机制。
using namespace std;
class Base {
public:
virtual void funA() { cout << "funA of Base" << endl; }
private:
int a;
};
class Derive :public Base {
public:
virtual void funA() { cout << "funA of Derive" << endl; }
};
void display(Base* ptr) {
ptr->funA();
}
int main()
{
Derive d;
Base b;
Base* ptr = &b;
display(ptr);
ptr = &d;
display(ptr);
return 0;
}
上面输出结果为 funA of Base 和 funA of Derive;