《Effective C 》繼承有關

2021-10-23 06:41:40 字數 834 閱讀 8836

編譯器為乙個類預設建立 default(預設/預設)建構函式,複製建構函式,賦值號過載函式,析構函式。

如果不想使用編譯器預設提供的複製建構函式和賦值號過載函式,可以在基類將這兩個函式歸在該類的private屬性裡面。

帶有多型性質的基類應該宣告乙個虛的析構函式。或者說,如果基類帶有任何的虛函式,它就應該擁有乙個虛的析構函式。

不要在建構函式和析構函式裡面呼叫虛函式,因為構造和析構函式不會被繼承。

類的賦值號過載函式返回值是物件的引用

派生類的複製建構函式和賦值號過載函式要注意複製完整每個成員。

在派生類的複製建構函式中呼叫基類的複製建構函式,這個只能寫在派生類的初始化列表裡

為什麼要呼叫基類的複製建構函式或賦值號過載函式?

複製建構函式和賦值號過載函式相互呼叫是沒有任何意義的。

函式引數或者返回值有時傳遞引用(物件的引用)比傳遞值(物件)來的更高校,並且可以避免切割問題。(比如說賦值號過載函式)

必須返回乙個物件的時候,不能返回物件的引用。(比如說加減乘除這類符號的過載函式)

protected並不比public更具有封裝性。

以盡量多的非成員非友元函式替換成員函式。

如果某個函式的所有引數都需要型別轉換,要用非成員函式。

為什麼非友元?

介面繼承和實現繼承不同。

絕不重新定義繼承而來的non-virtual 函式。

絕不重新定義繼承而來的預設引數值。

Effective C 審慎的使用多重繼承

author class borrowableitem class electronicgadget class player public borrowableitem,public electronicgadget player mp mp.checkout 編譯器會報錯,歧義需要明確指出呼叫哪...

有關繼承的理解

繼承 類與類之間的關係,子類往往是繼承了父類,用關鍵字extends來宣告子類。滿足is a。也就是說,子類必須是乙個父類的擴充套件,或者是乙個父類,或者像乙個父類。優點 提高了 的復用性和可維護性。對於子類而言,父類中除去私有變數之外,其他方法和變數都可以在子類中使用,而子類也可以定義新的變數和方...

有關繼承類乙個細節 (補充繼承類)

我在微博中已經提到繼承的方式有三種 公有繼承 私有繼承 保護繼承 然私有繼承會將基類的公有成員變成私有成員。如果,我們想通過外部訪問基類中的成員,則無法實現,原因在於私有繼承將基類中的公有成員變成了私有成員。為此,我們將想辦法將子類中私有成員 基類的公有成員 變成子類公有成員,則需用到 此符號,便會...