您好,登錄后才能下訂單哦!
本篇內容介紹了“C++中在什么時候使用class”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
C.2:類包含不變式是使用class定義類,如果數據成員可以獨立變更時使用struct定義類。
譯者注:不變式可以認為是類的成員必須滿足的條件。例如對于std::string來說,長度成員必須等于其管理的字符串長度。
Reason(原因)
可讀性。降低理解難度。使用class關鍵字讓程序員意識到需要不變式。這是一個有用的慣例。
譯者注:使用class關鍵字還默認保證了數據成員不會被隨意修改,這使維持不變式成為可能。
Note(注意)
不變式是一個對象的成員必須滿足的邏輯條件,這些條件由構造函數建立,是public成員函數的前提條件。一旦不變式成立(通常是由構造函數),該對象所有成員函數都可以被調用。不變式可以被非正式的說明(例如通過注釋),或者通過Expects(事前條件)正式檢查。
如果所有數據成員都可以相互獨立地變更,則不可能存在不變式。
Example(示例)
struct Pair { // the members can vary independently
string name;
int volume;
};
but:
class Date {public: // validate that {yy, mm, dd} is a valid date and initialize Date(int yy, Month mm, char dd); // ...private: int y; Month m; char d; // day};
譯者注:這個例子的不變式是年月日的組合必須有效。
如果一個類包含私有數據成員,使用者就不能在不使用構造函數的情況下完全初始化該類的對象。因此,類的定義者在提供構造函數的同時,必須定義其含義。這實際上意味著定義者需要定義不變式。
See also(參見):
define a class with private data as class
使用class關鍵字定義包含私有數據的類。
Prefer to place the interface first in a class
推薦在類的最初定義接口
minimize exposure of members
最小限度暴露成員
Avoid protected
data
避免protected類型數據
Enforcement(實施建議)
Look for struct
s with all data private and class
es with public members.
找到所有數據都被定義為私有的結構體和包含公有成員(應為數據成員,譯者注)的類。
譯者注:所謂原則就是不需要深入思考就可以執行,而效果卻會逐漸顯現的那些良好實踐。
“C++中在什么時候使用class”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。