關於this指標
雖然this指標大家已經很熟悉了,但是我這裡討論的關於this指標的問題可能大家還沒注意過:
為了說明這個關於this的歸屬問題,我自寫了一段再簡單不過的程式,雖簡單但具體:
#include
class a
void aa()
我的問題是指標p1是指向b自身嗎?
一看程式,大家就知道:不是,p1指標是指向b的乙個隱含父類a的。
對,答案對了(如果你對這一點也懷疑,那你只有自己到vc上試試了。),
在此,我也可以直接給乙個證據,那就是上面的編譯錯,因為a中不存在m_data3。
你的答案其實說明我想要得的乙個結論1,那就是this(程式中的)指標是指向a的。
但是,我想問既然p1是指向b的父類的,那麼b.p1->aaa()應該呼叫的是那個函式呢?
答案是b中的那個,如果不是虛函式呢,結果就是a中的那個了(這從結論1中可知),
原來是虛函式搗的鬼,但是這是為什麼呢?
雖然從一般意義上好像是這樣,但是,p1指標自始至終都是指向a的吧?不是父類的指標指向子類的情況吧?
因為沒有出現p1=&b的語句吧。:)
關於多型與虛函式
總結如下:
1)指標:父類的指標可以指向子類物件,但只能呼叫自身的成員函式和成員變數,除虛函式
外;子類的指標只能指向由父類顯示型別轉換為子類的物件,呼叫的是子類自身的
函式和變數,除虛函式外。
2)無指標(物件之間的型別轉換):父類物件可以轉化為子類物件,仍只能調有
自身的函式和變數,不能呼叫子類的函式和成員,與虛函式無關;子類物件不能顯示
的轉換為父類物件,除非人為編寫相關**。
即:虛函式必須與指標一起使用;除開虛函式之外,繼承類之間的型別轉換沒有
什麼直接作用。
物件生存方式
四種:stack、 heap、 global、 local static
產生方法:
第一種:在函式中,main()之內
第二種:new方法
第三種:在任何函式範圍之外,由startup**對其初始化。
第四種:在函式範圍之內的靜態物件
讀書筆記(2)
沉默的藝術 意識科學基礎理論 量子效應只是用於穩定某種內在自由度極大的基本粒子,然後再用基本粒子的內在屬性產生意識體驗。只能通過呈現乙個系統的 物理 屬性來描述乙個系統。只能通過變成內在屬性配對的其中乙個系統,以直接體驗的方式來獲得這些內在屬性的資訊。定義乙個包含所有系統的系統d,除該系統外無任何系...
讀書筆記2
ripple專注於跨境支付領域,主要為銀行和其他金融機構提供基於區塊鏈協議的外匯 轉賬方案。目前已公布的銀行客戶有3家,並正在和另外80多家銀行深入洽談。ripple主 要通過其開發的interledger協議專案,在保持銀行等金融機構的各自不同的記賬系統的基 礎上,打造乙個全球統一的網路金融傳輸協...
讀書筆記 模板 2
模板的編譯模型 應該將類定義和函式宣告放在標頭檔案中,而普通函式和類成員函式的定義放在原始檔中。要進行模板的例項化,便一起必須能訪問定義模板的源 1 包含編譯模型 utlities.h ifndef utlities h define utlities h templateint compare c...