c++ 重载,覆盖,重定义

时间:2022-05-05 09:39:28

写的不是很明白,后来又重新整理过了,在:

http://www.cnblogs.com/iois/p/4986790.html

函数重载(Function Overloading)

C++允许同一范围(scope)(在同一个类中)内具有多个名称相同的函数。这些函数成为重载函数(overloaded function)。
C++ 使用函数声明的  参数数量参数类型省略号存在或缺失(Presence or absence of ellipsis),const 或 volatile 来区分同一范围内具有相同名称的函数组。

覆盖(override,重写):

子类重写定义基类中有相同名字相同参数的虚函数。
不同范围内(特指基类派生类)
函数名相同
参数相同
基类函数有virtual关键字修饰
virtual函数是private的,派生类中可重写为public 或者protected。

重定义(redefining,也叫隐藏):

派生类的函数屏蔽了与其同名的基类函数;
a、若派生类的函数与基类的函数名称相同,但参数类表不同,则基类函数被隐藏(不管基类函数有无virtual修饰);
b、若派生类的函数与基类的函数名称相同,参数列表相同,但基类函数无virtual修饰,则基类函数被隐藏。