浅析重载、隐藏与覆盖

重载

重载又称为静态多态,静态绑定,静态决议等。因为要实现重载,所以C++和C的命名方式有所不同。重载主要是为了减轻程序员对函数名的记忆负担,让所有功能相似的函数使用同一名字。

重载条件:

(1)在同一作用域中
(2)函数名相同
(3)参数列表不同



隐藏

隐藏是因为在子类中定义了与基类同名的函数,而将基类的函数隐藏掉,要想访问基类的函数,则必须加作用域限定符。

隐藏条件:

(1)在不同作用域中,分别在基类和派生类中
(2)隐藏只要求函数名相同就行,返回值和参数列表可同可不同。
(3)在派生类中只要不是重写就是隐藏



覆盖(重写)

覆盖是指父类中的虚函数在子类中被重新定义,所以在子类对象的虚函数表中将由子类中重新定义的函数地址覆盖掉原来父类中虚函数的地址。协变是指虚函数的返回值可以是本类类型的指针或引用。动态多态又称动态绑定、动态决议。
多态实现了"一个接口,多个方法"。多态分为静态多态和动态多态。静态多态通过重载实现的,在程序的编译期间就确定要调用的是哪个函数,因此又称为编译时多态。动态多态是通过虚函数实现的,当然赋值兼容规则(里式代换原则)是其的前提,动态多态是在运行时确定所针对的对象,因此又称为运行时多态。

覆盖条件:

(1)不在同一作用域中,分别在父类和子类中
(2)要求函数名相同,函数参数列表相同,返回值也相同(协变除外)
(3)基类函数必须是虚函数(virtual)
(4)访问修饰符可以不同




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

double_happiness

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值