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 ...