C++学习笔记——虚函数

用virtual关键字说明的函数是虚函数,是实现运行时多态的基础,C++中的虚函数是动态绑定的函数,且必须是非静态的函数成员,虚函数经过派生之后就可以实现运行过程中的多态。

一般成员函数可以是虚函数,构造函数不可以是虚函数,析构函数可以是虚函数。

虚函数的声明格式:

virtual 函数类型 函数名(形参表);

虚函数声明只能出现在类定义的函数原型声明中,而不能在成员函数实现的时候。

在派生类中可以对基类中的成员函数进行覆盖。

虚函数一般不声明为内联函数,因为对虚函数的调用需要动态绑定,而对内联函数的处理是静态的。

派生类可以不显式地用virtual关键字声明虚函数,这是系统就会用以下规则来判断派生类的一个函数成员是不是虚函数:

该函数是否与基类的虚函数有相同的名称、参数个数及对应参数类型;

该函数是否与基类的虚函数有相同的返回值或者满足类型兼容规则的指针、引用型的返回值;

如果从名称、参数及返回值三个方面检查之后,派生类的函数满足上述条件,就会自动确定为虚函数。这时,派生类的虚函数便覆盖了基类的虚函数。

派生类中的虚函数还会隐藏基类中同名函数的所有形式的其他重载形式。

一般习惯于在派生类的函数中也是用virtual关键字,以增加程序的可读性。

猜你喜欢

转载自blog.csdn.net/LKZYnih/article/details/81711628