您好,登錄后才能下訂單哦!
這篇文章主要講解了“C++如何設(shè)計并構(gòu)建不變量”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“C++如何設(shè)計并構(gòu)建不變量”吧!
E.4:圍繞不變量設(shè)計錯誤處理策略
To use an object it must be in a valid state (defined formally or informally by an invariant) and to recover from an error every object not destroyed must be in a valid state.
為了使用對象,它一定要處于有效狀態(tài)(通過不變量形式化或非形式化定義)并且為了從錯誤中恢復(fù),所有沒有銷毀的對象必須處于有效狀態(tài)。
Note(注意)
An invariant is a logical condition for the members of an object that a constructor must establish for the public member functions to assume.
不變量是一個適用于對象成員的邏輯條件,這個條件必須有構(gòu)造函數(shù)建立,可以作為公有成員函數(shù)的前提條件。
E.5: Let a constructor establish an invariant, and throw if it cannot
E.5:讓構(gòu)造函數(shù)建立不變量,如果不能就拋異常
Reason(原因)
Leaving an object without its invariant established is asking for trouble. Not all member functions can be called.
建立一個對象卻沒有建立不變量是在找麻煩。不是所有成員函數(shù)都是可以被調(diào)用的。
Example(示例)
class Vector { // very simplified vector of doubles // if elem != nullptr then elem points to sz doublespublic: Vector() : elem{nullptr}, sz{0}{} Vector(int s) : elem{new double[s]}, sz{s} { /* initialize elements */ } ~Vector() { delete [] elem; } double& operator[](int s) { return elem[s]; } // ...private: owner<double*> elem; int sz;};
類不變量-這里通過注釋聲明-通過構(gòu)造函數(shù)建立了。如果不能分配要求的內(nèi)存,new操作會拋出異常。運算符,特別是下標(biāo)運算符依靠不變量。參見:如果不能構(gòu)建有效的對象,就拋出異常。
Enforcement(實施建議)
Flag classes with private state without a constructor (public, protected, or private).
標(biāo)記那些沒有構(gòu)造函數(shù)(公有的,私有的或保護(hù)的)卻有私有成員的類。
感謝各位的閱讀,以上就是“C++如何設(shè)計并構(gòu)建不變量”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對C++如何設(shè)計并構(gòu)建不變量這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。