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 在派生類中重新定義此函式,要...