这样理解吧,&ival就像函数返回值一样,
建立一个临时对象,类型是int *,而C++的临时对象都是const的
所以&ival的完整类型是int *const;
这样一个 int *const的引用的类型是int * const&;
接着ival是const对象,
所以一个前置的const来说明
得到const int * const &
测试代码
int main()
{
int i;
int *p1 = &i;
int *const& cri = &i; //ok
// int *& ri = &i; //err,cannot convert from 'int *' to 'int *& ' ,A reference that is not to 'const' cannot be bound to a non-lvalue
int *& ri = p1;
const int ii = 0;
// int *const&crii = ⅈ //err,cannot convert from 'const int *' to 'int *const & ',Reason: cannot convert from 'const int *' to 'int *const '
const int *const& crii = ⅈ //ok
const int *pp = ⅈ
const int *&rii = pp;
return 0;
}