标签:
话说最近直播很火嘛,反正我今天已经看了一晚上大胸了
我们看到,直播间里大致分为3类观众:
1.普通观众
2.房管
3.超管
如何区分这三种观众呢?我们发现,普通观众只显示自己的昵称,房管在自己的昵称前面还有一个醒目的“房管”标记,当然,超管的昵称前有个醒目的“超管”标记。看直播的都希望自己有个标记,因为这样才能装13啦...
现在,我们通过编写代码来区分这3种观众。
class CommonAudience; //普通观众 class HouseManager; //房管 class SuperManager; //超管
string strUserType; //用户类型
if (strUserType == "普通观众") { //不充钱你还想装逼? commonAudience->showMark(""); } else if (strUserType == "房管") { houseMgr->showMark("房管"); } else if (strUserType == "超管") { superMgr->showMark("超管"); }
好了,我们想想,每次发弹幕都要判断,未免有点不好。
有什么办法可以避免判断呢?先观察这三个对象,普通观众、房管、超管,虽然类型不一样,但是有一定的联系,他们都是我们pandaTV的用户哦。
由此,在C++中,多态的作用就是根据对象的不同类型而采取不同的行为。
回顾一下多态的用法,声明基类的指针,利用该指针指向任意一个子类对象,调用相应的虚函数,可以根据指向的子类的不同而实现不同的方法。
下面对代码进行重构:
class User { virtual void showMark(); };
声明一个用于发送弹幕时区分用户的函数,注意是虚函数,为什么要用虚函数请自行百度。
class CommonAudience : User { void showMark(){ /*什么都不显示*/ } }; class HouseManager : User { void showMark(){ /*显示房管标记*/ } }; class SuperManager : User { void showMark(){ /*显示超管标记*/ } };
比如
User *user = new HouseManager; user->showMark();
这样房管每次发送弹幕时,不用判断用户类型,只需调用showMark()函数,即可在昵称前显示“房管”2字啦!
以上纯属娱乐!
标签:
原文地址:http://www.cnblogs.com/hellovenus/p/5538661.html