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預處理宏?