譚浩強《c++程式設計》學習篇———虛函式
一、定義
定義:在某基類中宣告為 virtual 並在乙個或多個派生類中被重新定義的成員函式。
語法:virtual 函式返回型別函式名(參數列)
用途:實現多型性,通過指向派生類的基類指標,訪問派生類中同名覆蓋成員函式 虛函式必須是基類的非靜態成員函式,其訪問許可權可以是protected或public。
定義為virtual的函式是基類期待派生類重新定義的,基類希望派生類繼承的函式不能定義為虛函式。
二、作用
當把基類的某個成員函式宣告為虛函式後,允許其在派生類中對該函式重新定義,賦予其新的功能,並且可以通過指向基類的指標指向同一類族中不同類的物件,從而呼叫其中的同名函式。
由虛函式實現的動態多型性就是:同一類族中不同類的物件,對同一函式呼叫作出不同的響應。
三、動態關聯
基類指標變數先指向了某乙個類物件,然後通過此指標呼叫該物件中的函式,這樣的呼叫在編譯時是無法確定呼叫哪乙個類的虛函式的,所以在執行階段確定關聯關係。
這種多型性是動態多型性,即執行階段的多型性。
虛析構函式:
(截圖來自譚浩強《c++程式設計》
p是指向基類的指標變數,指向new開闢的動態儲存空間,當基類中的析構函式沒有宣告為virtual時,只會執行point的析構函式,如果希望能先執行circle的析構函式,需要將基類的析構函式宣告為virtual.
四、純虛函式
定義:基類中宣告乙個虛函式,留待派生類中定義
語法:virtual 函式型別函式名(引數列表)=0
作用:在基類中為派生類保留乙個函式的名字,以便派生類根據需要對它進行定義
《 程式設計》譚浩強 學習筆記
目錄 乙個程式從編寫到最後得到執行結果要經歷以下一些步驟 數值型別 整數型別 原碼補碼及反碼 移位 左移 右移 進製表示 表示式中各資料型別混合計算 編譯 為了使計算機能執行高階語言源程式,必須先用complier的軟體,也稱編譯程式或 編譯系統 把源程式翻譯成二進位制形式的 目標程式 生成 檔案或...
c 學習 虛函式
虛函式學習 1.虛函式的關鍵字是virtual.2.如果在父類中成員函式前加上virtual,則如果子類中定義了重名函式,則兩者會產生聯絡.3.virtual函式的子子孫孫都是virtual的,管你在子類中說不說,但好習慣還是加上.4.當向上造型 upcast 用父類指標或引用去訪問子類的虛函式時,...
C 學習(虛函式)
1 靜態聯編,動態聯編 將源 中的函式呼叫解釋為執行特定的函式 塊被稱為函式名聯編 在c語言中,沒有函式的過載,所以,在編譯過程中就可以完成函式的聯編,這種叫靜態聯編。而c 中,虛函式的使用,使得在編譯過程中我們無法得知使用的是哪乙個,所以編譯器 只能在程式執行時選擇正確的虛函式 這種叫動態聯編。2...