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

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

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值