虛函式是實現多型性的前提需要在基類中定義共同的介面
介面要定義為虛函式
如果基類的介面沒辦法實現(如形狀類shape)
解決辦法
將這些介面定義為純虛函式
定義純虛函式:
class 類名;
純虛函式不需要實現
#include
#include
using
namespace
std;
class shape
*/};class circle : public shape
};class square : public shape
};void drawallshapes(const
vector
& v)
}int main()
#include
using
namespace
std;
//對於乙個沒有任何介面的類,如果想要將它定義成抽象類,只能將虛析構函式宣告為純虛的
//通常情況下在基類中純虛函式不需要實現
//例外是純虛析構函式要給出實現。(給出乙個空的實現)
class base
};class drived : public base
;int main(void)
虛函式與多型
前三者為靜態繫結,虛函式為動態繫結 動態繫結 只有通過基類指標或引用呼叫虛函式才能引發動態繫結 虛函式不能被宣告為靜態 include using namespace std class base virtual void fun2 void fun3 class derived public ba...
虛函式與多型
多型性 呼叫同乙個函式名,可以根據需要實現不同的功能。虛函式 可以在程式執行時通過呼叫相同的函式名而實現不同功能的函式稱為虛函式。編譯時的多型性 函式過載 執行時的多型性 虛函式 執行時的多型性是指在程式執行之前,根據函式名和引數無法確定應該呼叫哪乙個函式,必須在程式的執行過程中,根據具體的執 況來...
虛函式與多型
多型性 c 支援兩種多型性 編譯時多型性,執行時多型性 虛函式 派生類可以不顯式地用virtual宣告虛函式,這時系統就會用以下規則來判斷派生類的乙個函式成員是不是虛函式 一般習慣於在派生類的函式中也使用virtual關鍵字,以增加程式的可讀性 該函式是否與基類的虛函式有相同的名稱 引數個數及對應引...