繼承與多型(下)

2021-10-03 04:41:18 字數 984 閱讀 5221

虛函式深入理解

純虛函式

小結過載和重寫有什麼區別?什麼時候是過載,什麼時候是重寫?

#include #include using namespace std;

class parent

int main(int argc, char *ar**)

virtual void func()

};

分析:這個類的設計完全脫離實際,沒有任何的意義!

#include #include using namespace std;

//圖形

class shape

};//矩形

class rectangle : public shape

double area()

};//圓

class circle : public shape

double area()

};//求圖形的面積

void area(shape* s)

area是純虛函式,= 0 告訴編譯器,這個函式故意只宣告不定義。

#include #include using namespace std;

//圖形

class shape;

//矩形

class rectangle : public shape

double area()

};//圓

class circle : public shape

double area()

};//求圖形的面積

void area(shape* s){ //可以定義抽象類的指標

cout << s->area() 《函式過載與函式重寫不同

多型是通過虛函式表實現的

虛函式在效率上會受到影響

抽象類可用於表示現實世界中的抽象概念

抽象類是通過純虛函式實現的

繼承與多型(下)

函式過載 必須在同乙個類中進行 子類無法過載父類的函式,父類同名函式將被覆蓋 過載是在編譯期間根據引數型別和個數決定呼叫函式 函式重寫 必須發生於父類與子類之間 並且父類與子類中的函式必須有完全相同的原型 使用 virtual 宣告之後能夠產生多型 多型是在執行期間根據具體物件的型別決定呼叫函式 c...

12 繼承與多型(下)

class parent 通過虛函式表指標vptr呼叫重寫函式是在程式執行時進行的,因此需要通過定址操作才能確 定 真正的應該呼叫的函式。而普通成員函式是在編譯時就確定了呼叫的函式。在效率上,虛函式 的效率 要低的多。注意 處於效率的考慮,沒有必要把所有的成員函式都宣告為虛函式。物件中vptr指標什...

繼承與多型

繼承 繼承是c 語言支援 重用及多型的重要機制。通過繼承,可以繼承可以在現有類的基礎上派生出新類,新類將共享現有類的成員,並且還可以新增新的成員。c 語言中,重用主要表現為可以使用現成的類 如.net框架類庫中的類 來定義新類,主要方法有組合和繼承兩種 繼承是物件導向程式設計支援 重用的另乙個重要機...