假如一款打怪類的遊戲,遊戲中有多個不同的怪物:龍、天使、鳳凰、士兵等。怪物能夠互相攻擊,攻擊敵人和被攻擊時都有相應的動作。動作是通過物件的成員函式實現的。假如現在遊戲需要公升級:要增加新的怪物–雷鳥。
設定基類 ccreature,並且使cdragon, cwolf等其他類都從ccreature派生而來。
;//龍的**
class
cdragon
:public ccreature
void
attack
( cghost * pghost)
void hurted (
int npower)
void
fightback
( cwolf * pwolf)
void
fightback
( cghost * pghost)
//攻擊其他怪物
//反擊其他怪物
}// 其他怪物類同樣也需要寫類似的**
有n種怪物,cdragon 類中就會有n個 attack 成員函式,以及 n個fightback成員函式。對於其他類也如此。
當遊戲公升級時,按照這種程式設計思想,需要修改每乙個類(增加兩個成員函式:攻擊和反擊)。這樣程式改動非常大。
class
ccreature
virtual
void
hurted
(int npower)
virtual
void
fightback
( ccreature * pcreature)};
class
cdragon
:public ccreature
;void cdragon::
attack
(ccreature * p)
//接收乙個基類指標
void cdragon::
hurted
(int npower)
void cdragon::
fightback
(ccreature * p)
//接收乙個基類指標
//其他怪物也寫類似與龍的**
使用多型思想實現的好處:只需要編寫新類cthunderbird, 不需要在已有的類裡專門為新怪物增加成員函式:
void
attack
( cthunderbird * pthunderbird)
;void
fightback
( cthunderbird * pthunderbird)
;
已有的類可以原封不動,程式改動非常小。
int main()
以龍攻擊狼為例:
dragon.
attack
(& wolf)
;
龍的攻擊函式的形參是乙個指向基類的指標,而這個指標現在指向乙隻狼wolf,當進入龍物件的攻擊函式時,首先執行:
p-
>
hurted
(m_npower)
;//多型
即,執行受傷函式時,由於p是基類指標,而hurted是虛函式,因此這條語句使用了多型。由於這裡p實際是指向狼物件wolf的,因此這條語句執行狼 wolf物件的hurted函式。這裡傳遞的引數便是這條龍的攻擊力,這個引數是protected的,因此基類可以直接訪問。因此執行狼的受傷函式時,狼減少對應的血量。 提高程式安全性
1 防止sql 注入攻擊 一 sql注入簡介 sql注入是比較常見的網路攻擊方式之一,它不是利用作業系統的bug來實現攻擊,而是針對程式設計師程式設計時的疏忽,通過sql語句,實現無帳號登入,甚至篡改資料庫。二 sql注入攻擊的總體思路 1.尋找到sql注入的位置 2.判斷伺服器型別和後台資料庫型別...
提高程式可讀性
在程式設計過程中注意提高程式的可讀性是良好的程式設計習慣,這使程式更易於理解,也更容易在以後進行修改和更正。同時也有助於我們理清自己的程式設計思路。為了避免步入 的wading,可讀性是必要的。不僅追求效率,也追求優雅,也即 乾淨利落的抽象 crisp abstraction 出自grady 物件導...
C 如何提高程式可讀性
程式的可讀性高是乙個程式設計師良好的程式設計習慣的體現。可讀性高可以讓程式設計師更好的理解冗長的 同時也更容易發現錯誤並且修改。不僅如此,在你請求別人對你的程式進行修改時,也能讓別人更好的進行修改工作。否找面對一坨坨的 段,恐怕沒人願意讀下去吧。所以這裡就提供幾個提高程式可讀性的技巧,如果你覺得自己...