C 讀書筆記之類的繼承1(第十三章)

2021-07-27 19:31:04 字數 1856 閱讀 8342

1、派生類的物件儲存了基類的資料成員。派生類物件可以使用基類的方法。

2、繼承特性中派生類要新增什麼?

(1)派生類類需要有自己的建構函式

(2)派生類可以新增成員或方法

(3)建構函式必須給新成員和繼承的成員提供資料

3、關於建構函式訪問許可權的考慮

(1)今天在書上看到乙個關於建構函式為什麼不能被繼承的原因。

建構函式不同意其他類方法,因為它建立新的物件,而其他類方法只有被現有的物件呼叫。這是建構函式不能被呼叫的原因之一。繼承意味著派生類物件可以使用基類的方法,然而,建構函式在完成其工作之前,物件並不存在。

(2)派生類不能直接訪問基類的私有成員,而必須通過基類方法來進行訪問,導致派生類建構函式必須呼叫基類建構函式。

有關派生類建構函式要點如下:

(1)首先建立基類物件

(2)派生類建構函式通過成員初始化列表來將基類資訊傳遞給基類建構函式。

(3)派生類建構函式應該初始化新增的資料成員。

#include 

using

namespace

std;

class base

~base()

void print()

};class derived : public base

derived(int x):dd(x),base()

~derived()

private:

int dd;

};int main()

【注意】:建立派生類時,程式首先呼叫基類的建構函式,在呼叫派生類的建構函式。基類建構函式負責初始化繼承的資料成員;派生類建構函式主要用於初始化新增的資料成員。派生類的建構函式總是呼叫乙個基類的建構函式。可以使用初始化列表指明要使用的基類建構函式,否則將使用預設的基類建構函式。

(3)派生類和基類的特殊關係

派生類可以使用基類的方法

基類指標或者引用可以在不進行顯示型別的情況下指向或引用派生類

基類指標或引用只能呼叫基類方法,不可以基類物件或者位址賦值給派生類引用和指標。

4、繼承

c++繼承的三種方式:公有繼承、私有繼承、保護繼承

繼承時is-a的關係,即派生類物件時基類的乙個物件。

5、多型公有繼承

兩種重要的機制實現公有繼承:

(1)在派生類中重新定義基類方法

(2)使用虛方法

書中關於使不使用virtual的解釋:

(1)如果方法是通過引用或者指標而不是物件呼叫的,沒有使用virtual,它將根據引用型別或者指標型別選擇方法。

如果使用virtual,程式將根據引用或者指向的物件的型別,選擇方法。

(2)如果方法在基類中被宣告為虛之後,它在派生類中自動成為虛方法。

【注意】:如果在派生類中重新定義基類的方法,通常應將基類方法宣告為虛的。

6、靜態聯編和動態聯編。

靜態聯編:在編譯階段就已確定的呼叫的方法

動態聯編:在程式執行階段才確定要使用的方法(virtual是動態聯編)

7、虛函式的注意事項

(1)建構函式不能是虛函式

(2)友元不能是虛函式,因為友元不是類成員,而只有成員才能是虛函式。

(3)沒有重新定義,將使用基類版本。

(4)重新定義將隱藏方法

8、當類宣告中包含純虛函式時,則不能建立該類的物件。

包含純虛函式的類只能用在基類。

9、繼承和動態分配記憶體

基類中有new

(1)派生類中沒有使用new,派生類呼叫基類的析構函式、拷貝建構函式】賦值運算子

(2)派生類中使用new ,必須顯示定義析構函式,拷貝建構函式,賦值運算子

APUE讀書筆記 第十三章 守護程序

使用者層守護程序的父程序是init程序 守護程序編寫規則 1 umask將檔案模式建立遮蔽字設定為乙個已知值 通常為0 2 呼叫fork,然後使父程序exit,保證了子程序不是乙個程序組的組長程序 3 呼叫setsid建立乙個新會話,由於該程序不是乙個程序組的組長程序,會發生以下三件事 a 該程序變...

讀書筆記 第十三章 專案干係人管理

1.專案干係人管理的各過程 識別干係人 規劃干係人管理 管理干係人參與 控制干係人參與 應該把干係人滿意度作為乙個關鍵的專案目標來進行管理 2.什麼是識別干係人 識別能影響專案決策,活動或結果的個人群體或組織,以及被專案決策,活動或結果所影響的個人,群體或組織。並分析和記錄他們的相關資訊的過程。這些...

品悟性能優化讀書筆記 第十三章

1.oracle的自動化工具,直接截圖了,不過我好想就用過awr 快照預設時間的更改 exec dbms workload repository.modify snapshot settings interval 30 修改預設時間從一小時改到30分鐘 還未做實驗 建立快照 exec dbms wo...