大家好,我是苏貝,本篇博客带大家了解C++的多态,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️
目录
1.多态的概念
多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优先买票。
2.多态的定义及实现
2.1 多态的构成条件
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了 Person。Person对象买票全价,Student对象买票半价。
那么在继承中要构成多态还有两个条件:
1、 必须通过基类的指针或者引用去调用虚函数
2、 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写
下面我们来解释虚函数和重写
2.2 虚函数
虚函数:被virtual修饰的类成员函数称为虚函数。
这里的virtual和菱形继承的虚拟继承用的virtual没有关系,就像取地址&和引用&没关系一样
2.3 虚函数的重写
虚函数的重写(覆盖):派生类中有一个跟基类完全相同的虚函数,即满足三同(派生类虚函数与基类虚函数的 返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数。
我们上面说,多态的构成条件有2个:
1、 用基类的指针或引用调用虚函数
2、 调用的是虚函数,且派生类必须对基类的虚函数重写
我们已经搞定了虚函数的重写,现在来看看是不是一定要用基类的指针或引用调用虚函数
如果用不用基类的指针或引用,不是多态