[C++]多态的使用

#include <stdio.h>
#include <iostream>
#include <string>
using  namespace  std;
 
class  base {
public :
     virtual  void  print() {
         cout<< "it is in base::print" <<endl;
     }
     virtual  ~base(){}
};
 
class  son: public  base {
public :
     virtual  void  print() {
         cout<< "it is in son::print" <<endl;
     }
     virtual  ~son(){}
};
 
class  grandson: public  son {
public :
     virtual  void  print() {
         cout<< "it is in grandson::print" <<endl;
     }
     virtual  ~grandson(){}
};
 
void  fun(base arge) {  //基类对print()的调用
     arge.print();
}
void  func(base& arge) {  //静态多态
     arge.print();
}
 
void  func_t(base* arge){  //动态多态
     arge->print();
}
 
int  main() {
     base a;
     son b;
     grandson c;
     func_t(&a);
     func_t(&b);
     func_t(&c);
 
     base d;
     son e;
     grandson f;
     func(d); 
     func(e);
     func(f);
 
     return  0;
}
要实现多态(动态绑定),必须满足以下之一
1、使用指针调用
2、使用引用调用
 
对多态的使用。
    建立一个父类的 对象,它的内容可以是这个父类的,也可以是它的子类的,
当子类拥有和父类同样的 函数,当使用这个对象调用这个函数的时候,
定义这个对象的类(也就是父类)里的同名函数将被调用,
当在父类里的这个函数前加virtual 关键字,那么子类的同名函数将被调用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值