【区分】【重载vs覆盖】C++重载与覆盖

【区分】重载与覆盖
(一)重载:指相同的范围中(例如一个类)不同的函数使用相同的函数名,但是函数的参数个数或类型或顺序不同
①方法名必须相同
②参数列表必须不相同,与参数列表的顺序无关
③返回值类型可相同也可不同
【注意】返回值类型相同与否不能作为重载函数的依据
(二)覆盖:指同一个函数,同样的参数列表,同样的返回值,但是函数内部的实现过程不同 [继承/多态]
·覆盖发生在派生类和基类之间,当派生类定义一个基类同名虚函数时,基类中的该函数被派生类中的同名函数所替换;覆盖主要用于实现多态
①覆盖要求基类方法必须为虚函数(或抽象方法)
②相同的函数名
③相同的参数类型
④相同的返回值类型
【区分】(1)重载主要是为了方便程序员为同一个操作提供多种形式的接口;覆盖是为了实现多态性,即让基类指针或引用能够指向派生类对象,并通过基类指针或引用调用派生类中的函数
(2)重载实现静态多态;覆盖实现动态多态
(3)重载可在同一类内或通过继承发生;覆盖仅发生在子类和基类间[继承]
【总结】重载同名不同参;覆盖继承虚函数
【注意】覆盖必须建立在继承的基类虚函数上;而有继承关系时不仅可能是覆盖,也可能是重载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值