1 向上型別轉換
取乙個物件的位址並將其作為基類的物件來使用
2 **
函式體和函式呼叫相聯絡稱為**
遭**:在程式執行之前
晚**:在程式執行時
3 虛函式
為了引起晚**,需要在基類使用vitual修飾函式
4 c++如何實現晚**
vtable
編譯器放置特定的虛函式位址
在每個虛函式類中,編譯器秘密的放置乙個指標。
指向這個vtable
5抽象基類和純虛函式
基類只作為乙個介面。
純虛函式:基類至少加入乙個純虛函式
當繼承乙個抽象類時,必須實現所有的純虛函式否則繼承的類也會是乙個純虛函式
6rtt1 執行時型別辨認
7 物件切片
傳值8 過載和重定義
重新定義乙個基類的過載函式會隱藏多有該函式的其他基類版本
1 不許改變過載函式的返回值
2 可以改變返回指標和引用
9 虛函式
vptr和vtable
設定vptr是建構函式的工作。
預處理器沒有訪問和類的概念
10 建構函式的呼叫次序
1 確保兌現被正確的建立
2 派生類只訪問自己的成員,不訪問基類成員
3 11 虛函式的呼叫發生在程式執行時
這時編譯器不知道這個物件屬於這個成員函式屬於的類別
虛機制在建構函式中不起作用
12 構造函式呼叫時只知道建構函式所屬的類。完全不知道這個類屬於其他的類別
13 建構函式被呼叫後才有vtable
14 析構函式可以為虛函式
自最晚派生的類開始,並像上的基類
15 純虛析構函式
必須為純虛析構函式提供乙個函式體
16 析構函式的虛機制
17 建立基於物件的繼承
單根繼承
18 運算子過載
19 向下型別轉換
dynamic_cast 顯示轉換
安全型別轉換
20 返回正確的位址,錯誤的話返回0
多型性和虛函式
11.27 多型指的是同樣的資訊被不同型別的物件接收導致不同的行為,包括 靜態多型性和動態多型性。靜態多型性包括 函式過載和運算子過載 動態多型主要 由虛函式實現。虛函式宣告 virsual 型別說明符 函式名 參數列 純虛函式 virtual 函式型別 函式名 參數列 0 在派生類中定義 抽象類 ...
多型性和虛函式
多型性是物件導向程式設計的乙個重要特徵。c 支援多型性,在 c 程式設計中能夠實現多型性。1 乙個典型的例子 先建立乙個 point 點 類,包含資料成員x,y 座標點 以他為基類,派生出乙個 circle 圓 類,增減資料成員 r 半徑 再以 circle 類為直接基類,派生出乙個 cylinde...
多型性和虛函式
目錄 什麼是多型性 乙個典型的例子 利用虛函式實現動態多型性 虛函式的作用 靜態關聯和動態關聯 什麼情況下應當宣告虛函式 虛析構函式 純虛函式與抽象類 純虛函式 抽象類乙個綜合的例子 向不同的物件傳送同乙個訊息,不同的物件在接收時會產生不同的行為 即方法 從系統實現的角度來看,總共分為兩類 靜態多型...