c++ overload(重载),override(覆盖), hide(隐藏)

本文深入探讨了C++中的函数重载(overload)、覆盖(override)及隐藏(hide)的概念。详细解释了重载发生在相同作用域内函数名相同但参数不同的情况,而覆盖则是在派生类中重写基类的虚函数,最后介绍了隐藏如何阻止派生类调用基类的同名函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、overload重载,发生在两个函数作用域相同,两个函数名相同,但是函数参数数量,类型,顺序不同的情况下,此时编译器将会根据传入的参数数量、类型和顺序不同来决定调用哪个函数。注意,返回类型不同无法构成overload,但是const有时候会造成重载,具体情况如下图:

其中,放在函数尾部修饰时的例子如下:

2、override覆盖,发生在基类有虚函数时,派生类可以重写和基类虚函数同名且参数表也相同的函数,此时编译器将按照指针来决定调用哪个函数。当然,指针只能是基类的指针,因为派生类将会包含基类的所有方法和变量,那么基类的指针也可以被当作是派生类的指针来看待。所以一个基类的指针,如果是指向了一个派生类,且该派生类中也重写了基类中的虚函数,那么调用该指针的该名称方法将会直接调用该派生类中重写的该方法。

3、hide隐藏,发生在基类函数和派生类函数同名,但是基类该名称函数没有virtual关键字修饰,这将导致无法在派生类中调用到基类的函数,当然在基类的对象中还是可以调用到基类中的该函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值