複製控制和繼承

2021-07-29 19:43:33 字數 692 閱讀 7882

1、  如果派生類顯式定義自己的複製建構函式或賦值操作符,則該定義將完全覆蓋預設定義。被繼承類的複製建構函式和賦值操作符負責對基類成分以及類自己的成員進行複製或賦值。  

2、  如果派生類定義了自己的複製建構函式,該複製建構函式一般應顯式使用基類複製建構函式初始化物件的基類部分。

3、  賦值操作符必須防止自身賦值。假定左右運算元不同,則呼叫 base 類的賦值操作符給基類部分賦值。該操作符可以由類定義,也可以是合成賦值操作符,這沒什麼關係——我們可以直接呼叫它。基類操作符將釋放左運算元中基類部分的值,並賦以來自 rhs 的新值。該操作符執行完畢後,接著要做的是為派生類中的成員賦值。

4、  析構函式的工作與複製建構函式和賦值操作符不同:派生類析構函式不負責撤銷基類物件的成員。編譯器總是顯式呼叫派生類物件基類部分的析構函式。每個析構函式只負責清除自己的成員。物件的撤銷順序與構造順序相反:首先執行派生析構函式,然後按繼承層次依次向上呼叫各基類析構函式。

5、  刪除指向動態分配物件的指標時,需要執行析構函式在釋放物件的記憶體之前清除物件。處理繼承層次中的物件時,指標的靜態型別可能與被刪除物件的動態型別不同,可能會刪除實際指向派生類物件的基類型別指標。如果刪除基類指標,則需要執行基類析構函式並清除基類的成員,如果物件實際是派生型別的,則沒有定義該行為。要保證執行適當的析構函式,基類中的析構函式必須為虛函式。如果析構函式為虛函式,那麼通過指標呼叫時,執行哪個析構函式將因指標所指物件型別的不同而不同。

JS案例 繼承和深複製

寄生式繼承 聖杯 father.prototype.name hello 在father類中新增乙個name屬性 function father 構造father類 function son 構造son類 var inherit function 使用閉包產生私有函式 return function...

繼承方式和訪問控制

include stdafx.h include using namespace std 類內部的private protected public 影響訪問許可權 繼承中 private protected public,影響父類中的成員在子類中的訪問許可權,不影響子類現有的成員訪問方式 99 只使...

c 訪問控制和繼承

表示訪問控制和繼承 派生類可以訪問基類中所有的非私有成員。因此基類成員如果不想被派生類的成員函式訪問,則應在基類中宣告為 private。乙個派生類繼承了所有的基類方法,但下列情況除外 基類的建構函式 析構函式和拷貝建構函式。基類的過載運算子。基類的友元函式 1,繼承自乙個基類時格式為 class ...