类的成员函数重载、覆盖、隐藏、多态(持续更新....)

类的成员函数重载、覆盖、隐藏、多态:


概念区分:

1. 重载 必须在 同一个作用域内; 同一个类中,函数名相同,函数参数不同(类型不同 或 个数不同 或 顺序不同),构成重载成员函数。注意:不能根据函数的返回值类型来区分重载函数,因为可能会引起函数二义性(函数有忽略其返回值的情况,在这种情况下,编译器不知道调用哪个函数,从而会导致函数二义性问题)

2. 覆盖 出现在基类和派生类之间,不在同一个类作用域,函数名相同,参数也相同(个数,类型,顺序都相同),并且 基类函数为虚函数(即 函数前有 virtual),则派生类成员函数覆盖基类同名成员函数。覆盖即多态

3. 隐藏 在基类和派生类中除了覆盖,其余情况就属于隐藏。

    情况一:基类和派生类,同函数名,同参数个数、类型、顺序,但基类不是虚函数。此时,派生类成员函数隐藏基类同名成员函数。

    情况二:基类和派生类,同函数名,函数参数不同,此时,派生类成员函数隐藏基类同名成员函数。

4. 总结: ① 同一个类中,同函数名,不同参数,为函数重载; (virtual关键字可有可无)

              ② 不同类中,同函数名,同参数,且基类为虚函数,为函数覆盖,即多态;

              ③ 不同类中,同函数名,不管参数是否相同,且不是虚函数,为函数隐藏;

5. 具体各类情况举例说明,详见 隐藏、覆盖、重载举例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值