重载(Overload):
---------------
在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函
数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制叫重载。
重载不关心函数的返回值类型。如 int f(int ) float f(int) 不能构成重载
覆盖 (Override)
----------------
是指派生类中存在重新定义的函数,其函数名、参数列、返回值类型必须同父类中的相对应
被覆盖的函数 严格一致 ,覆盖函数和被覆盖函数只有函数体(花括号中的部分)不同,当
派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖
函数版本,这种机制就叫做覆盖。
成员函数被重载的特征有:
1) 相同的范围( 在同一个类中 );
2) 函数名字相同;
3) 参数不同;
4) virtual 关键字可有可无。
覆盖的特征有:
1) 不同的范围( 分别位于派生类与基类 );
2) 函数名字相同;
3) 参数相同;
4) 基类函数必须有 virtual 关键字。
隐藏(Hide)
----------
是指派生类的函数屏蔽了与其同名的基类函数,规则如下:
1) 如果派生类的函数与基类的函数同名,但是参数不同。此时, 不论有无 virtual 关键>字 ,基类的函数将被隐藏( 注意别与重载混淆) 。
2) 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual 关
键字。此时,基类的函数被隐藏 (注意别与覆盖混淆) 。
以上转载了一些定义