在c++ primer第五版中文版中,說了這麼一句:引用在初始化的時候必須綁定一個對象,且不可重現綁定,可是若是你輸入如下代碼c++
int i = 0, j =0; int &r = i; r = j;
你會發現,竟然沒有報錯! 難道是書上錯了嗎? 按照個人理解,書上並無錯,r = j
,實際上不是從新綁定,而是把j的值賦給了r綁定的i上去。指針
仍是在c++ primer中文版第五版中,指出引用自己並非一個對象,因此不可使用指針指向它。code
而後我寫出了以下代碼對象
int i = 0; int &r = i; int *p = &r;
竟然又沒有報錯,究竟是我有問題仍是書有問題?class
可是有了上面一個問題的思考,這個問題也就不難理解,使用一個指針指向一個引用,實際上指向的是這個引用綁定的對象,按照這種思路理解,上面的代碼是沒有任何問題的。變量
咱們經常會遇到很複雜的類型,例如技巧
const int *p; int const *p; int * const p; const int * const int p;
遇到這種比較長的變量類型申明時,咱們能夠採起從右向左讀的辦法,例如引用
cont int *p
就是一個指向const int
類型的指針,而int * const p
就是一個常量指針,指向一個int
類型的數據im