今天看完了钱能C++继承,最后一题感觉很有意思,顺便编了出来,欢迎大家指点

题目如下:   10.9    练习10  第6题

一个三口之家,大家都知道父亲会开车,母亲会唱歌。但是只有家里人知道父亲还会修电视机。小孩既会开车又会唱歌也会修电视机,此外小孩还会打乒乓球。母亲瞒着家人在外面做小工以补贴家用。

试编程,让这三口之家从事一天的活动:先是父亲开车出去,然后母亲出去工作(唱歌),母亲下班后去做两小时小工。小孩在俱乐部打球,父亲回家后,再开车玩,后又高兴地唱歌。晚上,小孩和父亲一起修理电视机。

  我的代码如下:

Code:
  1. #include<iostream>   
  2. #include<iomanip>   
  3. using namespace std;   
  4. //-------------------------------------   
  5. class father   
  6. {   
  7. protected:   
  8.     void Repair(){cout<<"repair TV."<<endl;}   
  9. public:   
  10.     void Drvie(){cout<<"Drive out or play."<<endl;}   
  11.     void Sing(){cout<<"Singing."<<endl;}   
  12.     void visitR(){cout<<"Father ";Repair();}   
  13. };//-----------------------------------   
  14. class mother   
  15. {   
  16. private:   
  17.     void Daylab(){cout<<"Mother do two hours day laborers."<<endl;}   
  18. public:   
  19.     void Sing(){cout<<"Singing or work."<<endl;}   
  20.     void visit(){Daylab();}   
  21. };//-----------------------------------   
  22. class child:public father,public mother   
  23. {   
  24. public:   
  25.     void Play(){cout<<"Play billiards."<<endl;}   
  26.     void visitCR(){cout<<"Child ";Repair();}   
  27. };//-----------------------------------   
  28. int main()   
  29. {   
  30.     father f;   
  31.     mother m;   
  32.     child c;   
  33.     cout<<"This is the family for the day's activities:"<<endl;   
  34.     cout<<"Day:"<<endl;   
  35.     f.Drvie();   
  36.     m.Sing();   
  37.     m.visit();   
  38.     c.Play();   
  39.     f.Drvie();   
  40.     f.Sing();   
  41.     cout<<"Night:"<<endl;   
  42.     f.visitR();   
  43.     c.visitCR();   
  44.     return 0;   
  45. }   
  46.   

基本功能实现了,但自认为有两点没弄好:

1、只有家里人知道父亲还会修电视机没实现,孩子由于继承知道父亲会修电视机,但母亲不知怎么实现,希望高手解答。

2、35---43行代码输出的活动安排中没有具体到人,也就是说只说干了那些事,没说明白谁干的。但如果在父亲母亲Sing等公有函数中打印“father do”之类的,小孩对象调用对应成员本应打印出“child  do”但只会打印出“father do”那不出错,所以不好怎么实现。

欢迎拍砖 指教 交流!!!

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值