08-静态函数与友元
题目描述
有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视。

要求如下:

  1. 实现并完善Tv类;其中构造函数需修改和完善。另:最大频道为100;
    
  2. 将Remote设为Tv的友元类,以支持在Remote类中对Tv方法的调用。
    
  3. 在main函数中,通过Remote实例对TV实例进行操作。
    

输入
第一行,电视初始状态,依次为state,volume,channel,mode,input的初始值。
第二行,利用遥控器对上述状态的操作指令,用对应的函数名表示,如增加音量为volup

输出
第一行,执行遥控器操作后的状态。

输入样例
off 10 19 Cable VCR
onoff volup chanup set_mode set_input

on 11 20 Antenna TV

电视在关着的时候不会对指令做出响应

#include <iostream>
using namespace std;string State[2]={"off","on"};
string Mode[2]={"Cable","Antenna"};
string Input[2]={"VCR","TV"};class tv
{int state,volume,maxchannel,channel,mode,input;
public:tv(int s,int mc,int vol,int ch,int m,int i){state=s;maxchannel=mc;volume=vol;channel=ch;mode=m;input=i;}void onoff(){if(state==0)state=1;elsestate=0;}int getstate(){return state;}bool ison()const{if(state==1)return true;elsereturn false;}bool volup(){if(volume<=19)return volume++;elsereturn volume;}int getvolme(){return volume;}bool voldown(){if(volume>=1)return volume--;elsereturn volume;}void chanup(){if(channel<100)channel++;}void chandown(){if(channel>=1)channel--;}int getchan(){return channel;}void setmode(){if(mode==0) mode=1;else mode=0;}int getmode(){return mode;}void setinput(){if(input==0) input=1;else input=0;}int getinput(){return input;}void settings()const{cout<<State[state];cout<<" "<<volume<<" "<<channel<<" ";cout<<Mode[mode]<<" "<<Input[input];}friend class remote;
};class remote
{int mode;
public:remote(int m):mode(m){}bool volup(tv &t){return t.volup();}bool voldown(tv &t){return t.voldown();}void onoff(tv &t){t.onoff();}void chanup(tv &t){t.chanup();}void chandown(tv &t){t.chandown();}void setchan(tv &t,int c){t.channel=c;}void setmode(tv &t){t.setmode();}void setinput(tv &t){t.setinput();}
};int main()
{string state,mode,input;int volume,channel;int s,m,i;cin>>state>>volume>>channel>>mode>>input;if(state=="off") s=0;else s=1;if(mode=="Cable") m=0;else m=1;if(input=="VCR") i=0;else i=1;tv t(s,100,volume,channel,m,i);remote r(m);string command;while(cin>>command){if(command=="onoff")r.onoff(t);else if(command=="volup"){if(t.getstate()==1)r.volup(t);}else if(command=="voldown"){if(t.getstate()==1)r.voldown(t);}else if(command=="chanup"){if(t.getstate()==1)r.chanup(t);}else if(command=="chandown"){if(t.getstate()==1)r.chandown(t);}else if(command=="set_mode"){if(t.getstate()==1)r.setmode(t);}else if(command=="set_input"){if(t.getstate()==1)r.setinput(t);}}t.settings();return 0;
}

08-F. 电视机与遥控器(友元类)相关推荐

  1. C++(三十六)之电视机和遥控器友元类

    我们今天设计的是简单的电视机和遥控器. 电视机类能控制电视开关机.调整音量和频道. 而这些功能在遥控器上面也可以完成,所以把遥控器设置成电视机 的友元类.这样遥控器也可以访问电视机内部的private ...

  2. 【15分】F. 电视机与遥控器(友元类)

    题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道为100: 2.将Remote设为Tv的友元类,以支 ...

  3. 电视机与遥控器(友元类)

    电视机与遥控器(友元类) 题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道为100: 2.将Remo ...

  4. 【C++OJ_静态与友元】电视机与遥控器(友元类)

    [C++OJ_静态与友元]电视机与遥控器(友元类) 题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道 ...

  5. C++OJ电视机与遥控器(友元类)

    题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道为100: 2.将Remote设为Tv的友元类,以支 ...

  6. C++中友元类使用场合

    在C++中我们可以將函数定义成类的友元函数,这样在函数中就可以访问类的私有成员.与函数相同,类也可以作为另一个类的友元类,在友元类中可以访问另外一个类的所有成员. 声明友元类的方法很简单,只需在类中写 ...

  7. C++基础知识友元friend、友元函数和友元类

    为了在类之间进行数据共享时,提高效率,C++引入了友元的概念.友元主要有三个方面的应用: 将普通函数声明为类的友元函数: 将一个类声明为其他类的友元类: 将一个类中的成员函数声明为其他类的友元函数. ...

  8. 位域,extern “C“,struct 和 typedef struct,struct 和 class,union 联合,friend友元类,using,::范围解析运算符

    文章目录 位域 extern "C" struct 和 typedef struct C++中struct 和 class union联合 explicit(显式)关键字 frie ...

  9. c语言的友元函数的用法,C++友元函数和友元类概念解析

    一.友元函数 友元函数是一种特殊的函数,它需要在类体内进行说明,可以访问类的私有成员和保护成员,但又不是类的成员函数.友元函数的说明如下: friend 数据类型函数名(参数) 其中,friend是说 ...

最新文章

  1. python格式化html库_用Python格式化HTML代码
  2. MVC Razor模板引擎
  3. B - 数据结构实验之排序二:交换排序(冒泡和快排)
  4. ML之ECS:利用ECS的PAI进行傻瓜式操作机器学习的算法
  5. aes子密钥生成c语言_HBase配置AES加密
  6. java 使用ehcache,ehcache的介绍和使用,ehcache介绍使用
  7. Android:Kotlin语法基础
  8. 只要一点点力气就可以撬起重物?
  9. 3个月定期存款利息怎么算?
  10. 记账本------7
  11. HTML5求自动在闪,HTML5 重复而不停闪烁的团状物
  12. 软考-架构师-第六章-开发方法 第二节 软件开发模型(读书笔记)
  13. linux安装远程桌面管理工具xrdp
  14. 常用各种网络模块总结
  15. Swift - 实现公历、农历日期之间的相互转换
  16. 数据可视化笔记8 层次数据可视化
  17. RMON学习笔记(一)
  18. 新研究评估Masimo ORi™能否帮助临床工作者减少ICU机械通气患者的高氧血症
  19. 适用于Android设备的十大应用程序锁
  20. 能给国外发邮件的邮箱怎么登录?手机号电子邮箱怎么填写?

热门文章

  1. SQL查询众数与中位数
  2. MEC在教育信息化发展中的应用探讨
  3. html怎么添加伪类,css3伪类怎么用
  4. matlab 四舍五入、取整
  5. MSSQL 2005 生成SQL的方法
  6. linux安装命令格式化硬盘,如何在Linux下安装,分区,删除分区,格式化和卸载硬盘...
  7. ADC值转换为电压值(机械语言得出电压值)
  8. 2022年,软件测试怎么样?
  9. 解决部分网页打不开的方法(特别是CSDN)
  10. 谢伟业医生在公益这条路上