OOP學習筆記三C 中類不變式和斷言

2021-09-11 05:53:49 字數 1003 閱讀 2796

在學習cpp的時候一開始學語法並沒有看到有關斷言的介紹,在學習sql的時候倒是一開始就很強調斷言在程式中的重要性。

斷言通常是乙個用於評估真假的表示式.如果表示式評估為假,則斷言失敗。

在每個成員函式中包含乙個斷言太不方便了,可以在類裡買您包含一些恒為真的條件,無論物件呼叫任何成員函式,這些條件都必須為真。這樣的條件稱為類不變式。

c和cpp的編譯器都支援assert巨集,該巨集接受乙個表示式,而且必須判斷表示式的真假。倘若表示式判斷為真,則繼續執行,倘若接受表示式為假,則程式停止,並表示錯誤資訊表明斷言失敗,訊息中包含檔名,違規的語句源**行號。

還有兩個概念:前置條件和後置條件。

前置條件:執行**前的條件,即在操作開始被呼叫之前必須為真的條件

後置條件:成員函式成功地執行完畢,它將生成乙個滿足某些條件的結果,這樣的條件被稱為後置條件

assert巨集在此處可以派上用場,可以簡單的定義一對巨集pre_condition和post_condition,它們使用assert巨集。

#define pre_condition(condition) assert(condition)

#define post_condition(condition) assert(condition)

如果需要可以在這些巨集中新增訊息,當斷言失敗時列印訊息。

#define pre_condition(message,condition) assert((message,(condition))

#define post_condition(message,condition) assert((message,(condition))

當斷言失敗,希望列印失敗訊息時,可以在**中新增

pre_condition("laser disc tray is not closed",(_traystatus==eclosed));
在真正使用時,處理異常可以用適當的throw替換assert巨集。

C 學習筆記 類和物件 三

靜態的資料成員在記憶體中只佔乙份空間。每個物件都可以引用這個靜態資料成員。靜態資料成員的值對所有物件都是一樣的。如果改變它的值,則在各物件中這個資料成員的值都同時改變了。這樣可以節約空間,提高效率。關於靜態資料成員的幾點說明 1 如果只宣告了類而未定義物件,則類的一般資料成員是不佔記憶體空間的,只有...

c 學習 oop 定義基類和派生類

date 13 03 21 20 26 description 定義基類和派生類 父類 item base 子類 bulk item 基類 virtual函式 protected成員 派生類類派生列表 重定義vietual函式 可以訪問基類的public和protected成員 include us...

C 學習筆記(三)儲存類

下面列出 c 程式中可用的儲存類 auto 關鍵字用於兩種情況 宣告變數時根據初始化表示式自動推斷該變數的型別 宣告函式時函式返回值的佔位符。auto f 3.14 double auto s hello const char auto z new auto 9 int auto x1 5,x2 5...