C++ 友元素 友元类 嵌套类 01-- 1.1~1.6 友元类

80 篇文章 0 订阅
#include <iostream>
using namespace std;
/*---------------------------------
     第20章友元素 1.1 友元类
	 A是B的友元类,则A可以访问B的成员,但B不能访问A的成员
---------------------------------*/
class TV
{
public:
	friend class Tele;//Tele是TV的友元类,所以,Tele类对象可以访问TV类的成员
	TV():on_off(off),mode(tv),channel(5),volume(20){}
private:
	enum{on,off};
	enum{tv,av};
	enum{mincl,maxcl=60};
	enum{minve,maxve=100};

	bool on_off;
	int mode;
	int channel;
	int volume;	
};
class Tele
{
public:
	void Onoff(TV& t)  {t.on_off=(t.on_off==t.on)?t.off:t.on;}
	void Setmode(TV& t){t.mode=(t.mode==t.tv)?t.av:t.tv;}
	bool VolumeDown(TV& t);
	bool VolumeUp(TV& t);
	bool ChannelDown(TV& t);
	bool ChannelUp(TV& t);
	void Show(TV& t)const;
};
bool Tele::VolumeDown(TV& t)
{
	if(t.volume>t.minve)
	{
		t.volume--;
		return true;
	}
	else
	{	return false;}
}
bool Tele::VolumeUp(TV& t)
{
	if(t.volume<t.maxve)
	{
		t.volume++;
		return true;
	}
	else
	{	return false;}
}
bool Tele::ChannelDown(TV& t)
{
	if(t.channel>t.mincl)
	{
		t.channel--;
		return true;
	}
	else
	{	return false;}
}
bool Tele::ChannelUp(TV& t)
{
	if(t.channel<t.maxcl)
	{
		t.channel++;
		return true;
	}
	else
	{	return false;}
}
void Tele::Show(TV& t)const
{	
	if(t.on_off==t.on)
	{
		cout<<"电视机处于"<<(t.on_off==t.on ? "开启状态":"关闭状态")<<endl; //条件表达式整个外部加上小括号才能编译正确
		cout<<"音量大小为:"<<t.volume<<endl;
		cout<<"频道为:"<<t.channel<<endl;
		cout<<"信号接收模式为:"<<(t.mode==t.tv ? "TV":"AV")<<endl;
	}
	else
		cout<<"电视机处于关闭状态"<<endl;
}
int main()
{
	Tele t1;
	TV   t2;
	t1.Show(t2);
	cout<<"--------------"<<endl;
	t1.Onoff(t2);
	t1.Show(t2);
	cout<<"--------------"<<endl;
	t1.ChannelDown(t2);
	t1.Setmode(t2);
	t1.VolumeUp(t2);
	t1.Show(t2);

	return 0;
}

运行结果:


电视机处于关闭状态
--------------
电视机处于开启状态音量大小为:20
频道为:5
信号接收模式为:TV
--------------
电视机处于开启状态音量大小为:21
频道为:4
信号接收模式为:AV


Press any key to continue


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值