C 繼承過程中使用訪問說明符和虛函式

2021-09-10 04:53:23 字數 591 閱讀 2763

1.首先,繼承過程中使用訪問說明符主要是為了控制繼承下來的成員的訪問性,比如對類a:

class a ;
使用不同的繼承方式,對應的成員訪問性如下:

class b : public a ;

class c : protected a

;class d : private a

;

至於private 繼承:在 b 類裡面,this 還是可以轉成 a* 的,沒有破壞多型;private 繼承可以使子類 b 繼承父類 a 的 public、protected 成員,但又遮蔽了 b 的子類對這些成員的使用,其他用處可以參見[1]。

2. 其次,使用 virtual 說明符,主要是因為 c++ 裡的零開銷 zero overhead 原則,virtual 成員是有虛函式表開銷的,而且在需要動態繫結的場景下才會用到,c++當然是預設首選沒有開銷的

採用模板思路的可以參見靜態繫結的 crtp(curiously recurring template pattern)[2]。

類的訪問說明符和派生訪問說明符

兩個名詞 直接基類 出現在派生列表中 間接基類 由派生類通過其直接基類繼承而來 兩個訪問說明符 類的訪問說明符限制直接基類的類成員訪問形式 派生訪問說明符限制間接基類的類成員訪問形式 類的訪問說明符 public,private,protected private表示私有成員,只有該類的成員函式可以...

C 說明符和CV限定符

1.下面是儲存所說明符 2.下面就是cv限定符 volatile 關鍵字volatile表明,即使程式 沒有對記憶體單元進行修改,其值也可能發生變化。例如,可以將指標指向某個硬體位置,其中包含了來自串列埠的時間和資訊。在這種情況下,硬體 而不是程式 可能修改其中的內容。或者兩個程式可能互相影響,共享...

C 中使用SQL儲存過程說明

c 中使用sql儲存過程說明 一 表的建立sql語句 create table tree node id int not null node name varchar 20 collate chinese prc ci as null pat id int null url nvarchar 50 ...