重载(overload),重写(override),隐藏(hiding)

啥是签名(signature)?:
1. Number of parameter.
2. Type of parameter.
3. const or not//顶层const和普通会导致重定义,底层const才是不同的签名
ps: return type is not included.

重载overload(同一个作用域签名不同)

  1. 识别:同一个作用域内,多个同名函数,签名不同。
  2. 场景:编译器将会在一个作用域内的‘可用候选函数’中选择形参(parameter)与函数调用的实参(argument)最佳匹配的一个函数。

重写override(继承,虚)

  1. 识别:返回类型相同(协变返回值类型除外),函数名相同,签名相同。
  2. 场景:派生类函数和基类虚函数具有相同的函数名、签名时,就会发生重写(还有个别名叫覆盖吧),它们只是实现不一样。

隐藏hiding(继承,非虚)

  1. 识别:派生类中的函数隐藏/屏蔽基类中具有相同名字的非虚函数
  2. 场景: 在调用一个类的成员函数时,编译器会沿着类的继承链逐级地向上查找函数的定义,如找到就停止。如果一个派生类和一个基类有一个同名函数,由于派生类在继承链中处于下层,编译器最终会选择派生类中的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值