函数重载,函数重写(虚函数重写),函数重定义(非虚函数重写),以及名称覆盖(函数重定义时,与父类参数个数不同,或是参数类型不同)

本文详细解析了函数重载、重写与重定义的概念及其区别,特别强调了函数重载仅限于同一类中且参数必须不同,而重写则应用于父类与子类之间,用于实现多态。

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

函数重载:(注意,子类无法重载父类的函数)(类中,相同函数名,不同参数)

必须在同一个类中进行。

子类无法重载父类的函数,父类同名函数将被名称覆盖。

重载时在编译期间根据参数类型和个数决定函数调用。


函数重写(类间的虚函数,相同函数名及参数,也称为覆盖,):

必须发生于父类与子类之间

并且父类与子类中的函数必须有完全相同的原型

使用virtual声明之后能够产生多态(如果不加virtual ,则是重定义)


函数重定义(类间,相同函数名,参数可相同,也可不同,非虚函数,也称为隐藏)

如果在父类中定义一个函数(没有声明为虚函数),(原理上子类会继承父类的函数),如果子类中有相同函数名(参数个数或类型与父类不同),本来是相当于重载的,但因为子类无法重载父类的函数,所以此时会出现名称覆盖。即打算用子类对象调用父类的该函数时会出现编译器报错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值