虚函数
定义:在某基类中声明为virtual的函数,并在一个或多个派生类中被重新定义的成员函数。
语法:virtual 返回类型 函数名(参数表) {函数体}
用途:实现多态
虚函数必须是基类非静态成员函数,访问权限可以是public或protected,一般如下进行定义
class 基类名 {
virtual 返回类型 将要在派生类中重载的函数名(参数列表) {函数体};
};
子类继承了父类的一个函数(方法),而我们把父类的指针指向子类,则必须把父类的该函数(方法)设为virtual(虚函数)。
实现动态联编需要三个条件:
1、 必须把动态联编的行为定义为类的虚函数。
2、 类之间存在子类型关系,一般表现为一个类从另一个类公有派生而来。
3、 必须先使用基类指针指向子类型的对象,然后直接或者间接使用基类指针调用虚函数。否则指针总是指向基类
纯虚函数
virtual <类型><函数名>(<参数表>)=0;
如果派生类中没有对基类的纯虚函数进行定义,那么派生类自身也就成了一个抽象类,无法被实例化。
非虚函数当做虚函数用, 普通的非虚函数体在编译期就与函数调用绑定,指针的类型决定了哪个函数被调用。