C++:
Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。
(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。
Override(覆盖):是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。
Overwrite(重写):是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual
关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual
关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。
特别注意
如果基类有某个函数的多个重载(overload)版本,而你在子类中重写(overwrite)了其中的一个,或是子类添加新的函数版本,则所有基类的重载版本都被遮蔽。所以,正常情况下,在子类中应重写基类中的所有重载版本。
具体地讲,继承类中的重载和重写都包含了重写的涵义,即只要函数名一样,基类的函数版本就会被遮蔽,所以,在派生类中要保持基类的重载版本,就应该重写所有基类的重载版本。重载只在当当前类中有效,继承会失去重载的特性。也就是说,把基类的重载函数放在继承类里,就必须重写。
转自:http://blog.csdn.net/colinchan/archive/2009/08/27/4489073.aspx
分享到:
相关推荐
以下是对C++中overload,override,overwrite的区别进行了详细的分析介绍,需要的朋友可以过来参考下
Override Overload Overwrite 马克-to-win Java视频
overload and override.txt的区别重载和隐藏的区别
Delphi面向对象:overload与override[文].pdf
本文详细地描述了overload 和override的区别
方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现,想要了解更多请参考本
重载overload,这个概念是大家熟知的。在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制就是重载
本文主要介绍了PHP中overload与override的区别。具有很好的参考价值,下面跟着小编一起来看下吧
override and overload difference
C#中方法的重写(override)和重载(overload)的区别
overload和override的区别 override(重写)
重写(Override)概述 Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类...
java 面试题(1)都是...Vector, LinkedList的存储性能和特性7. &和&&的区别8. HashMap和Hashtable的区别9. final, finally, finalize的区别10. Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
描述Struts体系结构及Overload和Override的区别。
JAVA相关基础知识,例如:Overload和Override的区别
1.虚函数 2.纯虚函数 3.内存泄漏 内存溢出 野指针 4.访问控制 5.类中对象分布 6.overload重载 override覆盖 overwrite重写
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?