关于C++中函数的重写、重载、隐藏的简单介绍

在C++中,函数的重写(Override)、重载(Overload)和隐藏(Hiding) 是三种不同的函数特性,它们的区别和应用场景如下:

1. 函数重载(Overload)

定义

在同一作用域内,多个函数使用相同的函数名,但参数列表不同(类型、数量或顺序不同)。
返回值类型可以不同,但仅返回值不同不足以构成重载。

特点

编译时根据参数列表决定调用哪个函数。
作用域必须相同(例如在同一个类或全局作用域)。

2. 函数重写(Override)

定义

在继承关系中,子类重新定义父类的虚函数(使用 virtual 关键字),要求函数名、参数列表和返回类型完全相同。

通过基类指针或引用调用时,实际执行的是子类的函数(多态性)。

特点

必须使用 virtual 关键字声明基类函数。
动态绑定(运行时多态)。

3. 函数隐藏(Hiding)

定义

子类定义了与父类同名的函数(无需相同参数列表),导致父类的同名函数在子类作用域中被隐藏。

即使参数列表不同,父类函数也会被隐藏。
若要调用父类函数,需显式指定作用域(如 Base::func())。

特点

隐藏发生在不同作用域(基类 vs 子类)。
静态绑定(编译时决定调用哪个函数)。

总结

在这里插入图片描述

常见问题

1、如何区分隐藏和重载?

隐藏发生在基类和子类之间,重载在同一作用域内。

2、若子类函数参数与父类不同,是否构成重载?

不会!父类函数会被隐藏,必须显式指定作用域调用。

3、重写时是否必须加 override 关键字?

C++11 引入 override 关键字,非强制但建议使用,可帮助编译器检查是否满足重写条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值