Effective C 學習筆記(五)

2021-08-15 20:45:53 字數 1340 閱讀 2363

設計與宣告

1.必須返回物件時,別妄想返回其reference

在上一條款的學習中我們領悟到了 pass by value 的缺點及 pass by reference 的優勢,但這並不意味著我們任何時刻都是應該採用reference傳遞,因為引用必須作用在乙個已經存在的物件上,當企圖對乙個不存在的物件上引用將發生錯誤。

函式內部產生新物件有兩種: on the stack 和 on the heap

返回local物件

delete不容易,易造成記憶體洩露

正確的做法:返回乙個新物件

2.將成員變數宣告為private

如果成員變數不是de style="box-sizing: border-box; padding: 2px 4px; color: rgb(199, 37, 78); background-color: rgb(214, 219, 223); border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; white-space: nowrap; border: 0px;" >

publicde>

,那麼客戶訪問變數的唯一方式就是使用成員函式,也就是說,對成員變數的所有訪問都是通過括號的形式訪問的,也達到了介面一致性的要求。

可以使用函式讓你對成員變數的處理有更精確的控制。可以實現唯讀或者變數正確性的控制。

de style="box-sizing: border-box; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 4px; white-space: nowrap; border: 0px; background-color: rgb(214, 219, 223);" >

protectedde>

成員變數和de style="box-sizing: border-box; padding: 2px 4px; color: rgb(199, 37, 78); border-radius: 4px; white-space: nowrap; border: 0px; background-color: rgb(214, 219, 223);" >

publicde>

一樣缺乏封裝性,因為在這兩種情況下,如果成員變數被改變,都會有不可預知的大量**受到破壞。

3.若所有引數需採用型別轉換,情為此採用non-member函式

定義乘法:

正常執行:

但當*兩邊有乙個引數不是rational物件時:

更形象**:

改寫*函式為 non-member:

Effective C 學習筆記

學習effective c 已經有相當長的一段時間了,今天抽出時間又堵了一遍第一部分 c語言 c 以c語言為基礎,幾乎支援所有的c語言成分,例如區塊 語句 預處理 內建資料型別 陣列 指標等,c語言的侷限是 沒有模板 沒有異常 沒有過載 物件導向的c 也就是加上了物件特性的c,類 封裝 繼承 多型 ...

Effective C 學習筆記

1 c 是乙個複合式的語言 c 中不同部分有著不同的語言特性,例如 1.1 在c中傳遞形參時,按照值傳遞比按照指標傳遞效率更高 1.2 在物件導向程式中,物件要按照const引用而不是按照值傳遞 1.3 在stl程式設計中採取按照值傳遞方式 所以說c 中沒有統一的準則,要按照不同的特性採取不同的使用...

effective c 學習筆記

如果不考慮應用程式的使用場合,僅僅考慮語言的靈活性,我贊成作者的想法。但是不同的應用它會有不同的效能要求,所以語言的選擇,應該是用 最適合 條款去選擇。使用巨集定義常量,若定義在標頭檔案中,則所有包含標頭檔案的都可以使用。巨集定義,在預處理的時候進行替換。巨集定義一些簡單的函式,可以減少呼叫開銷,但...