关于C++中的重载和多态

来源:互联网 发布:淘宝卖家红包 编辑:程序博客网 时间:2024/05/01 19:10

同名的成员函数可分为两种:普通和虚函数。

 

 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、重写:在继承树中,子类中再现了父类的用虚函数或纯虚函数修饰的同函数原型(此时的同名最严格:函数名、返回类型、形参表都必须相同),这种现象叫重写(覆盖)。注意,若返回类型符合“类型兼容”亦可。即子类中的同名函数返回了父类类型或子类类型。这称为“协变类型”。

 

原创粉丝点击