c++ 多态
-
多态:同一事物表现出不同事物的能力,即向不同对象发送同一消息,不同的对象在接收时会产生不同的行为。
- 多态性是指用一个名字,定义不同的函数,这些函数执行不同但又类似的操作,这样就可以使用同一个函数名调用不同内容的函数。
- 在程序设计中经常使用多态性,例如:运算符,使用运算符+,可以实现整型数、浮点型数、双精度等类型之间的加法。
- 重载实现编译时多态,虚函数(覆盖)实现运行时多态。
- 重载:允许存在多个同名函数,而这些函数的参数表不同
- 覆盖:指子类重写父类的虚函数
- 多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单一句话:允许将子类类型的指针赋值给父类类型的指针
-
多态的定义和实现
-
1.多态定义构成条件
-
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person,Person买票就是全价,而Student买票就是半价。
-
继承中构成多态还需要两个条件:
-
a.调用函数的对象必须是指针或者引用。
-
b.被调用的函数必须是虚函数,且完成了虚函数的重写。
什么是虚函数?
在类的成员函数前加virtual关键字。
什么是虚函数的重写?
派生类中有一个跟基类完全相同(函数名、参数、返回值都相同)的虚函数,我们称子类的虚函数重写了基类的虚函数,虚函数的重写也叫做虚函数的覆盖。
-
-
-
-
抽象类
- 在虚函数的后面加上 = 0,则这个函数为纯虚函数,包含纯虚函数的类叫做抽象类(接口类),抽象类不能实例化出对象。派生类继承后也不能实例化处对象,只有重写纯虚函数,派生类才能实例化出对象。纯虚函数规范了派生类必须重写。
-
动态绑定与静态绑定
- 1.静态绑定:在程序编译期间确定了程序的行为,也称为静态多态,例如:函数重载,重载实现编译时多态。
- 2.动态绑定:在程序运行期间,调用具体的函数,也称为动态多态,虚函数实现运行时多态。
参考文献: