<span style="font-size:18px;"></pre><pre name="code" class="html"><p><span style="font-size:18px;"> 引用即是某一对象的别名,引用的类型必须和其所引用的对象的类型一致,在引用声明时必须对其初始化。引用将和它的初始值对象一直绑定在一起,无法令引用重新绑定到另外一个对象上。</span></p><p><span style="font-size:18px;"> const的引用,允许为一个常量引用绑定非常量的对象、字面值、甚至是一个表达式。但const引用不允许通过其引用修改其绑定的对象,但允许通过其他方式对所绑定对象的修改。</span></p><p><span style="font-size:18px;">
</span></p><p><span style="font-size:18px;"> const与指针,const int *ptr指向常量的指针,不允许通过指向常量的指针修改其所指对象的值,允许指向非常量的值和修改指向。const int *const ptr指向常量的常量指针,不允许修改指向。</span><pre name="code" class="cpp"></span>
备注:非常量引用或指针不能引用或指向常量的引用或指针。const是对给定类型的修饰。
</pre><pre name="code" class="cpp">#include <iostream>
using namespace std;
int main()
{
int i = 2;
const int j =42;
const int &r1 =i;
const int &r2 = r1*2;
int &r3 = i;
//r1 =42; // r1是对常量的引用,不能用作修改所绑定的对象
//int &r3 = r1 *2 ; //非常量引用不能指向常量引用
cout<<&i<<endl;
cout<< &r1<<endl;
cout<< &r2<<endl;
cout<< &r3<<endl;
cout<<i<<endl;
cout<<r1<<endl;
cout<<r2<<endl;
cout<<r3<<endl;
i =6;
cout<<&i<<endl;
cout<< &r1<<endl;
cout<< &r2<<endl;
cout<< &r3<<endl;
cout<<i<<endl;
cout<<r1<<endl;
cout<<r2<<endl;
cout<<r3<<endl;
double pi =3.14;
const double *ptr=π
cout<<&ptr<<endl;
cout<<*ptr<<endl;
double d = 6.2;
ptr = &d; //允许指向常量的指针指向一个非常量的值,并且可以修改指向常量指针的指向
cout<<&ptr<<endl;
cout<<*ptr<<endl;
double pi1 =6.28;
const double *const ptr1=π
cout<<&ptr1<<endl;
cout<<*ptr1<<endl;
double d1 = 6.2;
//ptr1 = &d1; //不允许修改指向
ptr = ptr1;
cout<<&ptr<<endl;
cout<<*ptr<<endl;
return 0;
}
}