目录
1.引用
1.1引用的概念
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。
类型& 引用变量名(对象名) = 引用实体;
注意:引用类型必须和引用实体是同种类型的
1.2引用的特性
1. 引用在定义时必须初始化
2. 一个变量可以有多个引用
3. 引用一旦引用一个实体,再不能引用其他实体
void TestRef()
{
int a = 10;
int b = 20;
int& ra; // 该条语句编译时会出错
//int& ra = a;
int& rra = a;
int& rra = b;
printf("%p %p %p\n", &a, &ra, &rra);
}
int main()
{
TestRef();
return 0;
}
1.3常引用
常引用就是在引用类型前面用 const 来进行修饰;和 const 修饰变量一样,被 cosnt 修饰的引用只能够读,而不能够写,即不能修改引用变量的值;
引用的权限问题 – 权限只能被缩小,不能被放大;
注: 这里的权限指的是读和写的权限,且只针对于指针和引用。
void TestRef() { int a = 10; int& ra = a; const int& rra = a; const int b = 10; int& rb = b; //权限被放大了 const int& rrb = b; } int main() { TestRef(); return 0; }
分析:a的权限是读写,ra的权限是读写,rra的权限是只读;很明显,ra是权限平移,rra的权限相较于a是缩小的;同样的b的权限是只读,rb的权限是读写,rrb的权限是只读,rb的权限相较于b是扩大的。因此这里就会报错!
对常量的引用: