zoukankan      html  css  js  c++  java
  • 第二十章友元类与嵌套类 1友元类 简单

    //第二十章友元类与嵌套类 1友元类
    //与函数相同,类也可以作为另一个类的友元类,这样,另一个类的私有及其保护成员都会暴露给友元类,友元类可以通过自己的访问来访问另一个类的所有成员,但是,这并不代表另一个类可以访问它的友元类的所有成员
    /*#include <iostream>
    using namespace std;
    
    //首先定义TV类,也就是电视机类
    class TV
    {
    public:
    	friend class Tele; //定义一个友元函数Tele;
    	TV():on_off(off),volume(21),channel(3),mode(tv){}
    	~TV(){}
    private:
    	enum{on,off};  //开关
    	enum{tv,av};   //模式
    	enum{minve,maxve=100}; //频道
    	enum{mincl,maxcl=60};  //音量
    	bool on_off; //开关
    	int volume;  //频道
    	int channel; //音量
    	int mode;    //模式
    };
    
    class Tele
    {
    public:
    	void SetMode(TV&t);
    	void OnOff(TV&t);
    	bool VolumeUp(TV&t);
    	bool VolumeDown(TV&t);
    	bool ChannelUp(TV&t);
    	bool ChannelDown(TV&t);
    	void Show(TV&t);
    };
    
    //显示函数
    void Tele::Show(TV&t)
    {
    	if(t.on_off ==t.on)
    	{
    		cout<<"电视机现在是"<<(t.on_off==t.on?"开启":"关闭")<<endl;    
    		cout<<"音量大小是"<<t.channel<<endl;
    		cout<<"信号接收模式是"<<(t.mode==t.av?"AV":"TV")<<endl;
    		cout<<"频道是"<<t.volume<<endl;
    	}else{
    	   cout<<"电视机现在是"<<(t.on_off==t.on?"开启":"关闭")<<endl;    
    	}
    }
    
    //减少音量
    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;
    	}
    }
    
    //减少频道
    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;
    	}
    }
    
    
    //设置开关
    void Tele::OnOff(TV&t)
    {
    	t.on_off = (t.on_off == t.off) ? t.on : t.off;
    }
    
    
    //设置模式
    void Tele::SetMode(TV&t)
    {
    	t.mode = (t.mode==t.tv) ? t.av : t.tv;
    };
    
    
    
    
    int main()
    {
    	TV tv;
    	Tele tele;
    	tele.Show(tv);
    	tele.OnOff(tv);
    	tele.Show(tv);
    	cout<<"调大声音"<<endl;
    	tele.ChannelUp(tv);
    	cout<<"看下一个频道"<<endl;
    	tele.VolumeDown(tv);
    	cout<<"转换一下模式"<<endl;
    	tele.SetMode(tv);
    	tele.Show(tv);
    
    
    
        return 0;
    }
    
    */
    

      

  • 相关阅读:
    Chrome截屏-截取当前页
    SecureCRT 工具分享
    mongodb在shutdown时报错:shutdown must run from localhost when running db without auth
    gdb如何实现info vtbl命令
    aspose.word 替换图片
    字节跳动校招+社招
    Flink日志输出配置
    Kafka高可用及高性能原因
    基于SAAS模式的客服云平台落地实践
    代码Recode
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2709230.html
Copyright © 2011-2022 走看看