[英]C++ encapsulation, how is it useful
下面的幻燈片是指 C++ 語言,它說
“封裝是為了確保用戶以安全的方式使用我們的 ADT”
但是,如果他可以訪問 my.h 文件,他可以編輯它,例如將我的 class 中聲明的內容從私有更改為公共。
例如:
我的文件.h:
class Complex {
private:
double re, im;
public:
double get_re();
};
然后用戶可以寫:(從私人更改為公共后)
Complex s1;
s1.re=13;
請點擊以下鏈接查看圖片(由於我沒有包含圖片的意思):在此處輸入圖片描述
使用 C++,您可以通過多種方式射中您的腳。 你也可以使用
#define private public
而且您無需更改代碼中的任何內容即可訪問私有接口...這里的重點不是如何破壞封裝,而是關於您使用它實現的目標。
當您必須在class
和struct
之間進行選擇時,您必須考慮是否要用它來表示什么,並且如果該事物具有不變量,那么您應該使用 class,否則 struct: encapsulation 將讓您實現“不變”使用封裝,因此讓用戶訪問數據,或僅使用您定義的公共接口設置/修改數據,而不是他想要的方式。
例如,如果你定義一個 class Date
,你有一個不變量,比如“max 31 as day, max 12 as month...”,但是如果你想定義例如DifferenceInDays
,它將只有一個int
的days
,比您可以允許用戶在該結構中讀取和寫入他想要的任何內容,因為您沒有任何不變量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.