int main()
{
int a = 2;
int b = 3;
//int& const c = b;//会忽略const,因为引用初始化后就不可以改变的,此处c就是b的别名,不会是其他的别名
int const & c = b;
//c = 8;//不可以
b = 8;//却可以
int *p = &a;
/*int * const &p1 = p;
p1 = &b;//不可以
*p1 = 6;//可以
*/
//int const *&p1 = p;//不可以
/*int const * const &p1 = p;//又可以
p1 = &b;//不可以
*p1 = 6;//也不可以
*/
int*& const p1 = p;//会忽略const,因为引用初始化后就不可以改变的,此处c就是b的别名,不会是其他的别名
cout << *p << " " << *p1 << endl;
cout << *p << " " << *p1 << endl;
return 0;
}
引用只是一个变量的别名,公用一个内存。const修饰的是它前面的类型。
T t;
T* p = &t;
T*& const pp = p;//const会被忽略
T* const &pp = p;//可以通过去掉&后来理解,表示pp常量指针
T const *& pp = p;//是错误的表示,并不是表示pp指针常量,为什么呢?
T const * const & pp = p;//又是正确的表示,可以通过去掉&后来理解,既不能改变pp也不能改变它所指的对象