今天學習了一下多型的有關知識。
在《c++ primer》書中,多型特性似乎只在書的後半部分 oo 裡面提到。雖然是物件導向中很重要的乙個概念,但是並未單獨開出乙個章節來介紹。
網上找了一些多型的介紹和程式,總結如下:
其底層含義是大記憶體(父類)中套著許多小記憶體(子類)
// 父類
class animal
};// 子類
class dog:public animal
};
如果呼叫的是小記憶體(子類)中繼承自大記憶體(父類)的方法,那麼會自動呼叫子類的方法
// 宣告乙個型別為dog的變數,指向該變數d的animal型指標p來呼叫多型的函式
dog d;
animal *p =
&d; p->enjoy();
與之對比的是,宣告乙個animal變數直接呼叫enjoy方法
// 直接呼叫父類中enjoy函式
animal dd;
dd.enjoy();
如果借助另外乙個類來實現的話:
class lady
// 給成員變數a賦值,即a指向animal型別的變數oo
void bark()
};
呼叫時區分的是傳給上述類建構函式的指標是指向父類還是指向子類的
lady anna(new dog()); // 轉到類lady的建構函式,anna指向新開闢的dog緩衝區
anna.bark(); // 此時呼叫bark,是dog類的方法
lady jane(new animal());// 轉到類lady的建構函式,anna指向新開闢的animal緩衝區
jane.bark(); // 此時呼叫bark,是animal類的方法
如此一來,**的自由度將大大提高。多型不愧是物件導向中最核心的特徵。 C 特性之多型
同乙個方法在派生類和基類中的不同行為稱為多中形態,簡稱多型。換句話來說,就是方法的行為應取決於呼叫該方法的物件。1.多型構成的條件 下面為大家解釋一下什麼是虛函式,以及虛函式的重寫 簡單來說,就是被virtual關鍵字修飾的類的成員函式 在虛函式宣告的後邊加上 0 表示該虛函式為純虛函式,派生類繼承...
C 特性之多型性
c 多型性概括為 乙個介面,多種方法 程式在執行時才決定呼叫的函式,它是物件導向程式設計領域的核心概念。c 多型性是通過虛函式來實現的,虛函式允許子類重新定義成員函式,而子類重新定義父類的做法成為覆蓋或者重寫,重寫可以有兩種,直接重寫成員函式和重寫虛函式,只有重寫了虛函式的才能算作體現了c 多型性 ...
C 三大特性之多型
c 的三大特性,封裝,繼承,多型。封裝可以使得 模組化,繼承可以擴充套件已存在的 而多型的目的則是為了介面重用。本篇部落格主要介紹c 中多型的相關概念及使用方法。多型性是允許你將父物件設定成為和乙個或更多的他的子物件相等的技術,賦值之後,父物件就可以根據當前賦值給它的子物件的特性以不同的方式運作。簡...