C++系列——重载(overload),重写(override),重定义(redefine)

1. 重载(overload)

定义:出现在相同作用域中的两个函数,如果具有相同的名字而形参不同,则称为重载函数。

返回值可以不同

应用场景:为了方便程序员编程,消除因参数不同而带来的命名上的冗余与复杂。


2. 重写(override,一般也叫做覆盖)

定义:出现在基类和派生类中,派生类重定义了基类中的virtual函数。

返回值要相同,或者是协变

应用场景:实现多态,完成运行时的动态函数调用:用不变的代码,完成动态的算法。模板,泛型技术,都是利用了这一特性。


3. 重定义(redefine,一般也叫做隐藏,hide)

定义:出现在基类和派生类中,派生类重定义了基类中的函数。分为两种情况,1)如果基类中的函数是virtual函数,则参数不同,才叫重定义,不然就是重写了;2)如果基类中的函数不是virtual函数,则参数相同才能被重定义,否则,基类和派生类中都存在该函数。

应用场景:重定义和上面两种情况的区别可以基本不用理会,因为其实很好分清。重定义了得函数,对于基类类型的指针是不可见的,所以如果要用该指针来进行调用,是会报错的。这个主要是为了区别基类和派生类之间的区别。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值