友元类...

来源:互联网 发布:淘宝店长工资多少 编辑:程序博客网 时间:2024/05/21 17:05
#include <iostream>using namespace std;class TV{    public:      friend class Tele;      TV():on_off(off),volume(20),channel(3),mode(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 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 VolumeUp(TV&t);       bool VolumeDown(TV&t);       bool ChannelUp(TV&t);       bool ChannelDown(TV&t);       void show(TV&t)const;};bool Tele::VolumeUp(TV&t){    if (t.volume<t.maxve)    {        t.volume++;        return true;    }    else    {        return false;    }}bool Tele::VolumeDown(TV&t){    if (t.volume>t.minve)    {        t.volume--;        return true;    }    else    {        return false;    }}bool Tele::ChannelUp(TV&t){    if (t.channel<t.maxcl)    {        t.channel++;        return true;    }    else    {        return false;    }}bool Tele::ChannelDown(TV&t){    if (t.channel>t.mincl)    {        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.mode==t.av?"AV":"TV")<<endl;        cout<<"频道为:"<<t.channel<<endl;    }    else    {        cout<<"电视现在"<<(t.on_off==t.on?"开启":"关闭")<<endl;    }}int main(){    Tele t1;    TV t2;    t1.show(t2);    t1.OnOFF(t2);    t1.show(t2);    cout<<"调大声音"<<endl;    t1.VolumeUp(t2);    cout<<"频道+1"<<endl;    t1.ChannelUp(t2);    cout<<"转换模式"<<endl;    t1.SetMode(t2);    t1.show(t2);    return 0;}


运行结果:

原创粉丝点击