關於類的資料成員的訪問許可權設計的一些思考

2021-08-25 10:07:50 字數 819 閱讀 4286

在c++的類的資料成員的訪問許可權分為三種:public、protect和private。private表示自己本類私有,不允許其它類的直接訪問;protected表示自己及子孫可以訪問,其它族類不允許直接訪問,我們可以把它比作是本家族的共同財富;public表示向全社會都公開的,任何類都可以直接訪問的。

一般而言,出於對資料成員封裝性的考慮,我們往往把資料成員設定為protect和private的訪問許可權。但是最近我發現,將一些類的資料成員設為public的訪問許可權也是有必要的。那麼在什麼時候將一些類的資料成員設為public的訪問許可權呢?

我們知道在c++的**重用中有兩種形式:一種是通過類的繼承,另一種通過類的組合。類的組合就是在乙個類物件的資料成員的型別是另乙個類物件的型別,示例**如下:

class b ; class a ;

在這種情況下我傾向於把a類的資料成員m_data設定為public的訪問許可權。當然在a類提供乙個獲取資料b的方法也是可以達到上面效果的,**如下:

class b ; class a protected: b m_data; // 這裡或者是b *m_pdata };

但我認為這種寫法實在不如第一種寫法好。第乙個理由是不夠優雅,為了設定b的值我們還得加上乙個setb的方法,這樣就形成我的同事所說的"vb風格"的c++**。第二個理由我發現這種類的組合主要是介面的重用,對類資料的封裝主要防止的是對類資料的隨意修改,但是開發人員對類的乙個復合型別(如類型別或結構體型別)的資料成員的隨意修改我覺得可能性比較小(相對於如int、float等簡單的資料型別的資料成員而言)。這樣倒不如

直接將m_data 設為public 訪問許可權外部使用起來更為方便。

關於類的成員的訪問許可權的題目

中興移動2014筆試的一道選擇題 下面注釋處會導致編譯錯誤的是?class base class sub public base class test int main base b sub s return 0 公有繼承時,基類的公有成員成為派生類的公有成員 基類的保護成員成為子類的私有成員,可以...

關於類的資料成員的訪問許可權設計的一些思考

在c 的類的資料成員的訪問許可權分為三種 public protect和private。private表示自己本類私有,不允許其它類的直接訪問 protected表示自己及子孫可以訪問,其它族類不允許直接訪問,我們可以把它比作是本家族的共同財富 public表示向全社會都公開的,任何類都可以直接訪問...

C 類成員的訪問許可權

c 類成員的訪問許可權 c 通過public protected private三個關鍵字來控制成員變數和成員函式的訪問許可權,它們分別表示公有的 受保護的 私有的,被稱為 成員訪問限定符 c 中的public private protected 只能修飾類的成員,不能修飾類,c 中的類沒有共有私有...