文章目录
- 1.什么是虚函数?
- 2.虚函数的调用
1.什么是虚函数?
存在父子继承关系的类对象中,对于这些对象中的成员函数进行调用时,
如果没有虚函数,那么需要通过各自的对象指针可以对各自的成员函数进行访问,
不可能实现父类对象指针来访问子类的成员函数。
虚函数可以实现,使用父类的指针,访问子类的成员函数。
这里面有使用的前提条件:
1.父类的指针必须指向要调用的子类对象,
比如父类是a,子类是b,父类a的指针ptr要调用b中成员函数,那么ptr必须指向子类对象。
a ptr=new b(...);
2.父类和子类必须都要要这个函数的定义。
函数返回类型,函数名,函数参数必须一致,但是实现可以不同。
一般来说,子类才会有完整的函数实现,父类的虚函数甚至可以定义为纯虚函数
3.要被调用的函数必须在父类中声明为虚函数
virtual void function(){.........
}
2.虚函数的调用
当父类和子类中都有相同的成员函数(返回类型,函数名,函数参数相同,实现不同),
并且成员函数为虚函数时,可以使用父类的指针指向子类对象,实现对子类虚函数的访问。
使用父类的指针指向子类对象,不能对子类中的非虚函数进行访问。
使用父类的指针指向子类对象,可以实现对父类的成员函数进行访问,
若成员函数为虚函数,ptr->a::function()可以实现对父类虚函数的访问;
若成员函数为父类独有,那么父类的成员函数可以使用指针直接访问。