C++编程杂谈之三:面向对象(续),C++编程杂谈之三:面向对象(续)
【 tulaoshi.com - C语言心得技巧 】
下载例子源代码
class fighter{private:int m_iHealth;int m_iSpeed;//为了方便,这个值使用延时值,越大表示速度越慢const int m_iHitPoint;char m_strName[260];public:fighter(const char* strName);void hit(fighter* pfighter);bool isAlive(); };上面的类可以清楚的抽象出我们所需要表达的数据类型之一,这里也许你已经发现了一些问题:
class actor//基类{protected:int m_iHealth;const int m_iSpeed;//为了方便,这个值使用延时值,越大表示速度越慢const int m_iHitPoint;char m_strName[260];public:actor(const char* strName,const int iHealth,const int iSpeed,const int iHitpoint);int& Health(){ return m_iHealth; };const char* getName(){ return m_strName; };virtual void hit(actor *Actor) = 0;bool isAlive(); }; actor::actor(const char* strName,const int iHealth,const int iSpeed,const int iHitpoint):m_iHealth(iHealth),m_iSpeed(iSpeed),m_iHitPoint(iHitpoint){strcpy(m_strName,strName);}bool actor::isAlive(){return (m_iHealth>0);}///////////////////////////////////////////////////////////类fighterclass fighter :public actor{public:fighter(const char* strName);virtual void hit(actor *Actor);private:};fighter::fighter(const char* strName):actor(strName,100,20,20){}void fighter::hit(actor *Actor){Sleep(m_iSpeed);if(!isAlive()){return ;}if(Actor&&Actor->isAlive()){ //这里我们用一个函数做了左值,因为函数返回的是引用if(isAlive())Actor->Health() = Actor->Health() - m_iHitPoint;}}///////////////////////////////////////////////////////////类knightclass knight :public actor{public:knight(const char* strName);virtual void hit(actor *Actor);private:};knight::knight(const char* strName):actor(strName,150,20,25){}void knight::hit(actor *Actor){Sleep(m_iSpeed);if(!isAlive()){return ;}if(Actor&&Actor->isAlive()){if(isAlive())Actor->Health() = Actor->Health() - m_iHitPoint;}}///////////////////////////////////////////////////////////类warriorclass warrio
来源:http://www.tulaoshi.com/n/20160129/1485572.html
看过《C++编程杂谈之三:面向对象(续)》的人还看了以下文章 更多>>