一.引用
引用是一種複合類型,引用分爲左值引用和右值引用,其中右值引用時C++11提出來的,
常說的引用其意爲左值引用。注意:引用不是對象,它是一個對象(變量)的別名,不能改變引用的對象,故必須在初始化的確定引用的對象。
(1)引用(左值引用)
引用的類型必須和被引用變量的類型一致,但有兩種例外情況。
①const引用
double dval = 3.14;
Const int &r1 = dval;
其內部轉化爲:
Const int temp = dval;
Const int &r1 = temp;
temp是一個臨時量,即是一個未命名的對象。所以如果r1不是常量引用,那麼即是允許通過引用改變常量了,故C++語言將它歸爲非法,編譯報錯。
②C++Primer p534 // 看到再完善
(2)右值引用 // 看到再完善
C++Primer p471
二. 指針
關於const與constexpr見下一篇文章詳細介紹。
(1)指針和const
如:
Const int * const p; // 這裏的P是一個常量指針(右邊const確定),指向整形常量(左邊const確定)。
(2)指針和constexpr
如:
Constexpr int *p1; // 這裏的p1是一個指向整形常量指針。
Constexpr const int *p2; //這裏的p2是指向整形常量的常量指針。
(3)指針和類型別名
如:
typedef char *pstring;
Const pstring ctrs = 0;//cstr是指向char的常量指針
Const char * str = 0; // str是指向const char的指針
Const pstring *ps; // ps是一個指針,它的對象是指向char的常量指針