簡體   English   中英

C++封裝,有什么用

[英]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

而且您無需更改代碼中的任何內容即可訪問私有接口...這里的重點不是如何破壞封裝,而是關於您使用它實現的目標。

當您必須在classstruct之間進行選擇時,您必須考慮是否要用它來表示什么,並且如果該事物具有不變量,那么您應該使用 class,否則 struct: encapsulation 將讓您實現“不變”使用封裝,因此讓用戶訪問數據,或僅使用您定義的公共接口設置/修改數據,而不是他想要的方式。

例如,如果你定義一個 class Date ,你有一個不變量,比如“max 31 as day, max 12 as month...”,但是如果你想定義例如DifferenceInDays ,它將只有一個intdays ,比您可以允許用戶在該結構中讀取和寫入他想要的任何內容,因為您沒有任何不變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM