重载与覆盖的区别

     对于在同一个可访问区内被声明的几个具有不同参数列(参数的类型、个数、顺序不同)的同名函数,程序会根据不同的参数列表来确定具体调用哪个函数,这种机制叫重载overload),overlaod不关心函数的返回值。

      覆盖override)是指派生类中存在重新定义的函数,其函数名、参数列、返回值类型必须同父类的相对应被覆盖的函数严格一致,覆盖函数和被覆盖函数只有函数体(花括号中的部分)不同,当派生类对象调用子类中同名函数时,会自动调用子类中的覆盖版本,而不是父类中的被覆盖版本。

      成员函数被重载(overload)的特征如下:

(1)相同的范围(在同一个类中) ;

(2)函数名称相同;

(3)参数不同;

(4)virtual关键字可有可无。

       覆盖(override)的特征如下:

(a)不同的范围(分别位于派生类和基类之中);

(b)函数名称相同;

(c)参数相同;

(d)基类函数必须有virtual关键字。

     说明:虚函数总是在派生类中被改写,这种改写叫做“override”.

     override是指派生类重写基类的虚函数,就像某个类中重写了另一个类中的某个函数,重写的函数必须有一致的参数表和返回值。override----一直没有合适的中文词汇来对应,翻译为“覆盖”更贴切。

     overload约定俗成地被翻译为“重载”,是指编写一个与已有函数同名但是参数表不同的函数。例如,一个函数既可以接受整型数作为参数,也可以接受浮点数作为参数。

重载不是一种面向对象的编程,而只是一种语法规则。重载与多态没有直接关系。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

sanqima

一键三连,多多益善

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

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

打赏作者

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

抵扣说明:

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

余额充值