將成員變數宣告為private

2021-08-21 05:28:47 字數 823 閱讀 2755

不應該將

資料成員宣告為public的三個理由:

class

accesslevels

void

setreadwrite

(int value)

intgetreadwrite

()const

void

setwriteonly

(int value)

private:

int noaccess;

// no access

int readonly;

// read-only access

int readwrite;

// read-write access

int writeonly;

// write-only access

};

class

speeddatacollection ;    

,其數量通常大得難以置信,因此public資料成員是完全未封裝的。但是,假設我們有乙個protected資料成員,隨後我們移除了它。現在有多少**會被破壞呢?所有使用了它的派生類都被破壞

,典型情況下,**的數量還是大得難以置信,因此protected資料成員就像public資料成員一樣沒有封裝。在這兩種情況下,如果資料成員發生變化,被破壞的客戶**的數量都大得難以置信。一旦你宣告乙個資料成員為public或protected,而且客戶開始使用它,就很難再改變與這個資料成員有關的任何事情。有太多的**不得不被重寫,重測試,重文件化,或重編譯。

條款22 將成員變數宣告為private

條款22 將成員變數宣告為private declare data members private.內容 首先我們討論一下成員變數宣告為public的情況,我們先從語法一致性角度來分析,如果成員變數不是public,那麼客戶訪問這些變數唯一的方法只能是通過訪問成員函式,由於這個時候public介面內...

條款22 將成員變數宣告為private

假設有乙個public成員變數,當取消它時 所有使用它的客戶 都會被破壞。因此public成員變數完全沒有封裝性。假設有乙個protected成員變數,當取消它時 所有使用它的derived classes都會被破壞。所有反對public成員變數的論點同樣適用於protected。其封裝性並不比pu...

條款22 將成員變數宣告為private

為什麼要將成員變數宣告為private 1.為了語法的一致性 訪問class成員變數時不需要使用小括號,訪問class成員函式時需要使用小括號。2.使用函式可以讓你對成員變數的處理有更精準的控制 可以實現 唯讀 只寫 3.最重要的,是為了封裝。封裝的好處 可以為所有可能的實現提供彈性 如新增通知 驗...