前面說過,相比c語言,c++有不少優點,主要體現在封裝性,繼承性和多型性。前面兩個比較好理解,後乙個一直不太明白。這本書裡面倒是說的很簡潔。
p48 先看一段**吧。從48頁的**改過來的。
執行結果如下:
為什麼是這樣的結果呢?因為我們在先後將am物件,fh物件,dk物件的位址賦給pan時,pan始終認為它自己指向乙個animal物件,所以一直呼叫的是animal物件擁有的方法。看下面的圖,可能認識會更深一些:
當我們構造 fish類物件 fh 時,我們需要注意,程式首先會呼叫 fish 類的基類 animal 類的建構函式構造乙個 animal 類的物件,然後再呼叫 fish 類的建構函式完成它自身部分的構造,從而拼接出乙個完整的 fish 物件,如圖2所示。animal 物件包括3個屬性,fish自身部分包括乙個 breathe 方法,當我們把 fh 物件的值賦給 pan指標時,pan認為它指向的是乙個animal 物件。所以會有如上結果。
構造donkey類物件dk和構造fish類物件fh的過程類似。
現在我們在animal類的breathe()方法前面加上乙個virtual關鍵字,即:virtual void breathe()。再次執行程式,執行結果如下:
這就是c++中的多型。
c++的多型用一句話概括就是:在基類的函式前面加上virtual關鍵字,在派生類中重寫該函式,執行時會根據物件的實際型別來呼叫相應的函式。如果物件型別是派生類,就呼叫派生類的函式;如果物件型別是基類,就呼叫基類的函式。
VC 學習筆記第二章 1
2006 11 12 22 05 08 一 c 的輸入輸出語句 include 包含c 輸入輸出標頭檔案 cout 輸出 cerr 標準錯誤輸出 cin 輸入 endl 換行 相當於c語言中的 n 二 類的基本應用 c 中的結構體成員可以是乙個函式 類中的成員預設情況下是不對外公開的。在類中publ...
第二章筆記
1.遞迴查詢和迭代查詢 遞迴查詢是一條環路,直接想成遞迴的定義就行,你想查乙個 的ip,首先將這個 傳給它的本地dns,然後認為本地dns可以直接將ip給你,然後本地dns為了知道這個ip又詢問下個dns伺服器。從此可以看出,增加了被涉及的伺服器的資料,所以一般用迭代查詢,迭代查詢是你詢問完後給你下...
《TCP IP詳解》筆記 第二章 鏈路層
第二章 鏈路層 1 鏈路層的作用 tcp ip的四層模型中,處於最下層的是鏈路層。它的主要作用是 接收和傳送ip模組的資料報 為apr模組傳送arp請求和接收apr應答 為rapr模組傳送rapr請求和接收rapr應答。2 乙太網協議和ieee 802.3協議。乙太網協議時先提出來的,採用csma ...