在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