讀深入淺出MFC的一節筆記 (轉)

worldblog發表於2008-01-25
讀深入淺出MFC的一節筆記 (轉)[@more@]

Slicing,就是值類的強制轉換。舉例::namespace prefix = o ns = "urn:schemas--com::office" />

類Cdocument是Cmydot的基類,

Cdocument* pDot;

Cmydot* pMydot=new Cmydot;

PDot=(Cdocument*) pMydot;這是正常的為實現多型而進行的轉換。但如果把指標改為值型即:

Cmydot pMydot;

(Cdocument)pMydot.fuction();就會出問題了,會生成一個Cdoucment類的然後賦值給pMydot,這樣原來的物件就被切掉了,而且虛指標和表也被賦值了,無法動態,pMydot就成了Cdocument的物件。這就是為什麼必須用指標實現動態的道理。

static 成員變數不屬於物件的一部份,而是類別的一部份,所以可以在還沒有誕生任何物件的時候就處理此種成員變數。但首先你必須初始化它。

不要把static 成員變數的初始化動作安排在類別的建構式中,因為建構式可能一再被呼叫,而變數的初值卻只應該設定一次。也不要把初始化動作安排在表頭檔中,因為它可能會被含入許多地方,因此也就可能被許多次。你應該在實現檔中且類別以外的任何位置設定其初值。例如在main 之中,或全域函式中,或任何函式之外:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998441/,如需轉載,請註明出處,否則將追究法律責任。

相關文章