同名的成员函数可分为两种:普通和虚函数。
1、同名函数们在同一个类中只能是重载函数
例如: void Show ( int , char ) ;
void Show ( char * , float ) ;
2、若在继承类族中,子类又新增了与父类同名的普通函数,此时是隐藏,调用时可以用“ :: ”区分,
例如: A :: Show ( );
B :: Show ( );
3、若在继承类族中,子类又新增了与父类同函数名的虚函数,此时是重写,但能表现出动态多态。
例如: Aobj.Show ( );是调用A :: Show ( ) 。
Bobj.Show ( );是调用B :: Show ( ) 。
重载、重写和隐藏的区别
1、重载:在同一作用域内,函数名相同却有不同的代码实现。
2、隐藏:在继承树中,子类中再度出现了父类的同名函数,无论形参是否相同,那都是隐藏不是重载。
3、重写:在继承树中,子类中再现了父类的用虚函数或纯虚函数修饰的同函数原型(此时的同名最严格:函数名、返回类型、形参表都必须相同),这种现象叫重写(覆盖)。注意,若返回类型符合“类型兼容”亦可。即子类中的同名函数返回了父类类型或子类类型。这称为“协变类型”。