理解靈活而奇特的C++-ch09

1.引用? 編程

    引用的概念:引用就是被引用變量的別名,這就意味着被引用變量能夠經過兩個或多個命名標識符訪問內存,故這些命名標識符的內存地址是相等的,引用能夠視爲隱式的指針變量。可是沒有指針變量的解引用和對變量的取    地 址的麻煩。下面是引用變量的一些結論和使用誤區: 安全

    C1:引用變量必須在聲明的時候就有初值,這個初值有兩層含義。被引用內存的值和地址。而且,一旦引用,終身引用。即引用變量一旦引用了一個內存,不能再引用別的內存。注意和用別的變量來賦值的區分。好比: 函數

        T x=...,y=... spa

        T& refx=x;        表示refx和x共享同一片內存。 指針

        refx=y;                表示修改引用內存中的值,而不是該向引用y的內存。等價於x=y; 對象

    C2: 同指針變量同樣,多個引用變量能夠共享統一內存,在這些引用變量的任何一個對共享內存(數據)的修改在其餘的全部引用變量可見。 內存

    C3:const  T&不能修改引用內存(內存中的數據),可是能夠讀取。 效率

    C4 :引用變量的對象能夠提升函數參數傳遞和從函數返回的效率,從而避免了賦值內存,而是複製內存地址,至關於在同一內存上的操做。對於對象而言,更是避免了函數參數(以對象)傳遞和返回對象由於賦值對象而調用複製構造函數的開銷。可是非const引用可能不經意間修改內存,那麼const T&更爲經常使用。const T&的特色那就是更安全、更高效。 變量

    C5:引用能夠想象成不能改指的指針。T* const. 構造函數

    C6:基於申明引用的同時就要初始化引用變量(讓它引用被引用變量的內存)考慮,類中的引用數據成員必須用成員初始化器初始化引用數據成員。事實上,使用成員初始化器初Ctor,始化成員的好處遠不止這些。

    C7:const T&能夠引用右值(又叫右值引用),右值一般是一些const對象/變量、常量、臨時變量或對象、未命名的內存(無名變量)等,而左值引用剛好相反,它必須引用一個清晰定義了的內存,即合法的命名內存(由於計算機按名存取變量)。

    C8:能夠對任意數據類型的變量引用,甚至是指針變量(指針的引用,引用的是一個指針變量)。可是沒法聲明引用的引用(&&)和指向引用的指針。

    C9:最後一點,引用應該儘量引用一個合法標識符標示的未被釋放(註銷或銷燬)的內存。由於,被引用的變量消失,引用失效。這可能致使一些難以預料或不可診斷的BUG,或一些標準之外的未定義行爲發生。

    總之,決定引用變量引用哪一個內存(變量)的惟一之處就是在聲明引用變量時,初始化的那個內存緩衝區。

    編程箴言,引用比指針安全,const引用比非const引用安全。引用劣於指針的一點大概就是,指針變量能夠改指,引用變量毫不可能改指。


      


2.文本?

3.文本表達式?

4.靜態(static)?

5.外部(extern)?

6.類型定義(typedef)

7.類型別名(aliases)?

8.類型轉換?

9.做用於解析?

10.統一初始化?

11.可選函數語法?

12.空指針文本?

13.尖括號?

14.初始化列表?

15.顯示轉換運算符?

16.特性?

17.用戶自定義的文本?

18.可變參數列表?

19預處理宏?

相關文章
相關標籤/搜索