父類中被重寫的函式依然會繼承給子類,預設情況下子類中重寫的函式將隱藏父類中的函式,通過作用域分辨符::
可以訪問到父類中被隱藏的函式。
這種現象產生的原因:
c/c++是靜態編譯型語言,在編譯時,編譯器自動根據指標的型別判斷指向的是乙個什麼樣的物件。靜態鏈編
1、在編譯此函式的時,編譯器不可能知道指標
p 究竟指向了什麼。
2、編譯器沒有理由報錯。
3、於是,編譯器認為最安全的做法是編譯到父類的
函式,因為父類和子類肯定都有相同的
函式。
但是,在實際的過程應用中產生了這麼乙個新需求:根據實際的物件型別來判斷重寫函式的呼叫
//物件導向新需求
//如果我傳乙個父類物件,執行父類的
print函式
//如果我傳乙個子類物件,執行子類的
printf函式
ø c++中通過
virtual
關鍵字對多型進行支援
ø 使用virtual
宣告的函式被重寫後即可展現多型特性
017 linuxC 之 多型的引入
多型 一種介面,多種方法 同一種呼叫方法,根據不同的物件,呼叫不同類中的函式 靜態聯編 非虛函式,在編譯時確定好 動態聯編 1.物件裡有指標,指向虛函式表 2.通過指標,找到表,呼叫虛函式 3.圖二 4.virtual來定義為虛函式 一 首先我們來看靜態聯編,非多型的程式 include inclu...
引入多型後構造器的呼叫順序
引入多型後構造器的呼叫順序 基類的構造器總是在匯出類的構造過程中被呼叫,而且按照繼承層次逐漸向上鏈結,以使每個基類的構造器都能得到呼叫。這樣做是有意義的,因為構造器具有一項特殊任務 檢查物件是否被正確的構造。匯出類只能訪問它自己的成員,不能訪問基類中的成員 基類成員通常是private型別 只有基類...
需求 需求分析能力之二 引入領域模型
2006年07月10日 16 09 00 許多人或許會對我的這種做法提出質疑,不錯,很多的流行書籍都告訴我們,在整理完需求以後,可以提取領域模型。但不管怎麼說,我仍然堅持我自己的做法,原因有n 書上的知識是教我們思考,不是教我們教條主義的。說白了,一句話,書可能是對的,也可能是錯的,流行的未必就是對...