虚函数使用目的是可以通过父类访问子类函数 ,创建一个父类可以调用子类同名函数(先通过指针将一个父类指针指向子类 ),使用virtual关键字修饰父类虚函数。
cpp
#include<iostream>
using namespace std;
class A
{
public:
void foo()
{
printf("1\n");
}
virtual void fun() //添加virtual表示该函数为虚函数,通过指针指向子类时会调用子类同名函数
{
printf("2\n");
}
};
class B : public A
{
public:
void foo() //隐藏:派生类的函数屏蔽了与其同名的基类函数
{
printf("3\n");
}
void fun() //多态、覆盖
{
printf("4\n");
}
};
int main(void)
{
A a;
B b;
A *p = &a; //父类指针指向父类对象
p->foo(); //输出1
p->fun(); //输出2
p = &b; //父类指针指向子类对象
p->foo(); //取决于指针类型,输出1
p->fun(); //父类该函数为虚函数,所以会调用子类该同名函数,输出4,体现了多态
return 0;
}