動態型別與靜態型別:
動態型別 變數或表示式中表示的記憶體中物件的型別
靜態型別 變數宣告的型別或表示式中的型別
一般來說引用或指標的型別應與物件的型別一致,但在存在繼承關係的物件中是乙個重要的例外,(我們可以將基類的指標繫結到派生類物件上)由此可能出現靜態型別與動態型別不一致的情況,這便是多型的基礎。
#include using namespace std;
class point
virtual double area()=0;//純虛函式
virtual double volumn()=0;
};class circle:public point
virtual double area()
virtual double volumn()
};class clinder:public circle
//派生類只負責其直接基類的構造函式呼叫,但在派生類存在虛基類時,所有的虛基類都由最後的派生類負責初始化
virtual double volumn()//由於area()為公有,故此處可以直接使用
};int main()
{ point *p;
point *c;
circle a(1,2,3);
clinder b(1,2,3,4);
p=&a;
c=&b;//動態聯編
cout►包含有純虛函式的類稱為抽象類(abstract class)。乙個抽象類只 能作為基類來派生新類,所以又稱為抽象基類(abstract base class)。抽象類不能定義物件 。
►如果在派生類中給出了抽象類的純虛函式的實現,則該派生類不再 是抽象類。否則只要派生類仍然有純虛函式,則派生類依然是抽象 類。抽象類至少含有乙個虛函式,而且至少有乙個虛函式是純虛函 數。
虛函式多型
一 知識點 1 乙個操作隨著所傳遞的物件型別的不同能夠做出不同的反應,其行為模式成為多型。p413 2 基類與派生類的同名操作,只要標記上virtual,則該操作便具有多型性。p416 3 一旦標記基類的函式為虛函式,便有連鎖反應,後面繼承的類中一切同名成員函式都變成了虛函式。如果是引發實際複製動作...
多型 虛函式
繼承模式分為單繼承和多繼承 在多繼承中會有相應的一些問題產生,比如資料冗餘,二義性等問題,那麼我們要如何解決這種問題。利用虛繼承便可以解決,在虛繼承的時候由虛基表可以去除資料冗餘和二義性。那麼函式可不可以寫成是虛函式呢?寫成虛函式有什麼作用?在派生類裡重寫基類的虛函式可以實現多型。include u...
虛函式多型
虛函式訪問知識點 王道程式設計師求職寶典 p163 1 與普通函式一樣,虛函式可通過物件名來呼叫,此時編譯器採用靜態聯編。通過物件名訪問虛函式時,呼叫哪個類的函式取決於定義物件名的型別。物件是基類就調基類,物件是子類就調相應的子類。2 使用指標訪問非虛函式時,編譯器會根據指標本身的型別決定呼叫哪個函...