C 技術感想 多型類的虛複製函式

2021-04-17 19:48:48 字數 567 閱讀 1040

c++技術感想

——多型類的虛複製函式

當我們在進行類物件的複製時,很可能會寫下面的語句:

t* psomeobj = ...;

t* pnewobj = new t(*psomeobj);

對於非多型類我們可能放心的這樣作,但對多型類呢?看這樣乙個場景,t是乙個派生層次中的基類,而psomeobj指向的是t的乙個派生類物件,這樣的複製顯然無法達到我們的預期目的。此時我們可以為t及它的所有基類(加入有的話)和派生類定義乙個虛複製函式clone(),其定義如下:

class someclass : public t

};現在我們可以放心的這樣複製前邊psomeobj指向的物件了:

t* pnewobj = psomeobj->clone();

虛複製函式非常漂亮的解決了我們的問題,但我們應該注意下面兩點:

1,虛複製函式告訴我們該類的物件會出現用基類指向的現象,所以我們必須為派生層次裡的每個類提供虛析構函式;

2,乙個設計良好的多型型別應該禁用他的拷貝建構函式,通過把它宣告為private或protected來實現。type the text here

類的多型(虛函式)

個人筆記,看不懂莫怪 一多型 在程式執行的過程中才能決定呼叫什麼方法,宣告基類的指標,利用該指標指向任意乙個子類的物件,呼叫相應的虛函式,可以根據指向的子類的不同而實現不同的方法。同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果。類中的多型就是派生類對同基類的方法進行了重寫,然後程式根...

C 多型,虛函式

在c 中可以用基類指標指向其派生類,如果乙個派生類繼承多個父類,那麼如何通過基類指標訪問同名的成員呢?如果基類a,基類b中都有函式fun 派生類在同時繼承a b後在記憶體中根據繼承的順序分配記憶體,例如在繼承列表中出現的是b,a,那麼b中的成員在a的之前,當我們用b的指標去訪問時候,編譯器便將指標指...

C 虛函式多型

由虛函式實現的動態多型性就是 同一類族中不同類的物件,對同一函式呼叫作出不同的響應。虛函式的使用方法是 1 在基類用virtual宣告成員函式為虛函式。這樣就可以在派生類中重新定義此函式,為它賦予新的功能,並能方便地被呼叫。在類外定義虛函式時,不必再加virtual。2 在派生類中重新定義此函式,要...