虛函式實現多型的很好的例子。

2021-07-09 19:40:16 字數 367 閱讀 8687

opencv3中定義了

baseimagedecoder作為各種檔案讀取的基類。基類裡的資料訪問許可權都是protected的,這樣可以被子類繼承使用。

把readheader和readdata定義為虛函式,具體的實現要到各種具體的檔案型別裡具體實現。

根據不同的格式派生了bmpdecoder,jpegdecoder,pngdecoder,。。。。。。。。

這樣在應用程式裡定義指向baseimagedecoder的指標,就可以根據不同的物件實現多型了。

struct imagecodecinitializer

std::vectordecoders;

std::vectorencoders;

};

利用虛函式實現多型

關鍵字 virtual 針對基類的不同派生類,如果派生類重新定義虛函式,那麼派生類的虛函式將覆蓋基類對應虛函式的實現。如果強制派生類定義某個函式,則可以在基類中將這個虛函式宣告為純虛函式,也就是基類不實現這個虛函式,所有實現留給派生類。當類中含有純虛函式時,這個類就是抽象類。不能建立抽象類的物件,否...

虛函式如何實現多型 ?

虛函式聯絡到多型,多型聯絡到繼承。關於多型,簡而言之就是用父型別別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式。這種技術可以讓父類的指標有 多種形態 這是一種泛型技術。所謂泛型技術,說白了就是試圖使用不變的 來實現可變的演算法。比如 模板技術,rtti技術,虛函式技術,要麼是試圖...

多型實現及虛函式

多型是c 物件導向三大特性之一 多型分為兩類 1.靜態多型 函式過載和運算子過載屬於靜態多型 2.動態多型 派生類與虛函式實現執行時多型 區別 靜態多型的函式位址早繫結 編譯階段確定函式位址 動態多型的函式位址晚繫結 執行階段確定函式位址 class animal class cat public ...