多态为何物

内容会持续更新,有错误的地方欢迎指正,谢谢!

多态是什么?有什么作用?

同一种事物所表现出的多种形态,简单地说是“一个接口多种实现”。

有两种类型的多态性:

  1. 编译时的多态性:编译时的多态性是通过函数重载或运算符重载来实现的。
  2. 运行时的多态性:运行时的多态性是通过虚函数与基类指针共同作用实现的。

作用:

  1. 静态多态的作用:减少了名字(比如:函数名)的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。
  2. 动态多态的作用:多态技术允许将基类指针或基类引用指向子类对象,根据对象的动态类型来决定调用的是哪个子类中的这个同名方法,从而解决了同名覆盖问题,写出了通用的代码,即扩展性优秀的代码,以适应需求的不断变化。
类的成员函数的重载、覆盖(重写override)、隐藏(重定义new)

函数重载:重载函数通常用来命名一组功能相似的函数:两个函数在同一个类中、 两个函数的名字相同、两个函数的形参列表一定不同。(属于编译时的多态)

函数覆盖:覆盖是指派生类函数覆盖基类函数:两个函数在不同的类中、 两个函数的名字相同、基类函数一定是虚函数、两个函数的形参列表和返回值类型都要完全一样。(属于运行时的多态)

函数隐藏:指派生类的函数屏蔽了与其同名的基类函数:有两种情况

  1. 两个函数在不同的类中、 两个函数的名字相同、两个函数的形参列表不同;
  2. 前提条件同第一点,如果派生类函数与基类函数形参列表相同,但在基类函数中没有virtual关键字,也会发生函数隐藏。(属于同名覆盖,多态就能解决同名覆盖这个问题)

总结:覆盖是父类和子类对应的那个函数的 参数列表完全相同;而重写是参数列表不同就行或者父类中那个函数根本就不是虚函数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值