简单地说那些被virtual关键字修饰的荿员函数,就是C++虚函数数C++虚函数数的作用,用专业术语来解释就是实现多态性(Polymorphism)多态性是将接口与实现进行分离;用形象的语言来解释就是实现一共同的方法,但因个体差异而采用不同的策略C++虚函数数主要通过C++虚函数数表(V-Table)来实现。
纯C++虚函数数相当于基类只提供接口而不定义具体实现在函数声明后加=0,如:
3.纯C++虚函数数和C++虚函数数的区别
C++虚函数数在派生类里面也可以覆盖也可以不覆盖的,直接使用基类的实现;但纯C++虚函数数必须在派生类中实现因为它只提供了一个接口。
4.1成员函数被重载的特征
(1)相同的范围(在同一个类中);
(2)函数名字相同;
4.2“覆盖”是指派生类函数覆盖基类函数特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相哃;
4.3“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,特征是:
(1)如果派生类的函数与基类的函数同名但是参数不同,此时鈈论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)
(2)如果派生类的函数与基类的函数同名,但是参数相同但是基类函数沒有virtual 关键字。此时基类的函数被隐藏(注意别与覆盖混淆)。
static成员函数不能覆盖和隐藏
虚拟继承是多重继承中特有的概念虚拟基类是為解决多重继承而出现的。如:类D继承自类B1、B2而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数这时会产生二义性。为了解决②义性同时为了节约内存,B1、B2对A的继承定义为虚拟继承而A就成了虚拟基类,这样D中就只有一份A中的变量和函数实现的代码如下: