关闭

C++用纯虚函数实现协议委托的例子

235人阅读 评论(0) 收藏 举报

  

  #include

  #include

  usingstd::cout;

  usingstd::endl;

  //用纯虚函数设计一个协议

  //实现该协议的类有一个被唤醒的行为

  classAwakable{

  public:

  //纯虚函数

  virtualvoidbeAwaken()=0;

  };

  //闹钟类

  classAlarmClock{

  public:

  //委托方(谁委托了闹钟提供唤醒服务)

  Awakable*delegate;

  //在指定时间后报警

  voidalarmAfter(int)const;

  };

  voidAlarmClock::alarmAfter(intseconds)const{

  sleep(seconds);

  cout<<"叮咚叮咚叮咚"<

  //回调委托方的方法

  delegate->beAwaken();

  }

  //人类(实现了Awakable协议可以被唤醒)

  classPerson:publicAwakable{

  public:

  //启动闹钟并指定唤醒时间

  voidrollClock(int);

  //协议中的被唤醒的行为

  voidbeAwaken();

  };

  voidPerson::rollClock(intseconds){

  cout<<"人设置了闹钟"<

  //在栈上创建闹钟对象

  AlarmClockac;

  //设置委托方

  ac.delegate=this;

  ac.alarmAfter(seconds);

  }

  voidPerson::beAwaken(){

  cout<<"人被闹钟唤醒了"<

  }

  intmain(void){

  //在堆上创建人的对象

  Person*person=newPerson;

  //人启动闹钟设置5秒后被唤醒

  person->rollClock(5);

  //释放指针指向的堆空间

  deleteperson;

  return0;

  }

原地址:http://blog.csdn.net/jackfrued/article/details/46811771

滨州男科医院http://www.0543jl.com  
滨州男科医院http://3g.0543jl.com
滨州男科医院http://www.bzmnnkw.com
滨州男科医院http://3g.bzmnnkw.com
滨州哪家男科医院好http://www.0543mnyy.com 
滨州哪家男科医院好 http://3g.0543mnyy.com 
滨州九龙医院http://www.0543jlyy.com 
滨州九龙医院http://3g.0543jlyy.com 
滨州男科医院官网http://www.256600nk.com 
滨州男科医院官网http://3g.256600nk.com
滨州男科医院哪家好http://www.sdbznk.com
滨州男科医院哪家好http://3g.sdbznk.com
滨州九龙医院http://www.120bz.net
滨州九龙医院http://3g.120bz.net

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1155次
    • 积分:23
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条
    文章存档