重载和重写

overload重载:是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。

override重写(覆写):是指派生类中存在重新定义的函数,以实现不同的功能,一般是用于子类在继承父类时,重写父类方法。其函数名、参数列表、返回值类型、所抛出的异常,所有都必须同基类中被重写的函数一致。被重写的方法不能为private。只有函数体不同(花括号内),派生类调用时会调用派生类的重写函数,不会调用被重写函数。重写的基类中被重写的函数必须有virtual修饰。

  • 范围区别:重载是在同一个作用域内,定义多个同名函数,通过参数的不同来区分;而重写是在不同的类之间,子类重新定义父类的虚函数。
  • 参数区别:重载可以改变函数的参数类型、个数或顺序,但不能改变函数的返回值类型和函数名;而重写必须具有与被重写函数相同的函数名、参数列表和返回值类型。
  • virtual:重写的基类函数必须有virtual修饰;重载函数和被重载函数可以被virtual修饰,也可以没有。
  • 重载是静态绑定,即在编译期间就确定了调用的函数;而重写是动态绑定,即在运行期间根据实际对象的类型来确定调用的函数。

使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。

重写和重载的本质区别是:加入了override的修饰符方法,此方法始终只有一个被使用的方法。

版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《重载和重写》
文章链接:https://zhuji.vsping.com/5183.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。