引用---基本特性

1.引用的基本特性

一.引用即别名

•声明一个标识符为引用,即表示该标识符可作为另一个有名或无名对象的别名

int a = 10; 
 int& b = a; 
 int& c = b; 
 ++c; 
 cout << a << endl; // 11 
 int const& d = c; 
 ++d; // ERROR

•在C++中,无名对象通常都被处理为右值,只能通过带有常属性的引用引用之

int const& a = 10; // 纯右值 
 int const& b = 20; 
 int const& c = a + b; // 将亡右值

二.引用必须初始化

•引用必须在定义的同时初始化,不允许先定义再赋值

int a = 10; 
 int& b = a; // OKint a = 10; 
 int& b; // ERROR 
 b = a;

三.引用不能为空

•无法定义一个什么都不引用的引用
–int& r = NULL; // ERROR

•但“野引用”或称“悬空引用”确实是存在的
–int& r = *new int (1);
++r;
cout << r << endl; // 2
delete &r;
++r; // 未定义
•解引用一个野引用,就跟解引用一个野指针一样,其结果将是未定义的,可能导致崩溃(段错误),
可能意外地修改了其它有效堆内存中的数据,也可能什么也没有发生而且结果还很正确,
但没有人能保证到底会是哪种结果

三.引用不能更换目标

•引用一经初始化便不能再引用其它对象

int a = 10, b = 20; 
  int& c = a; // c是a的引用,a是c的目标 
  c = b; // 将b的值赋给c的目标即a,而非令c引用b

•引用只有在其定义及初始化语境中具有“名”语义,一旦完成了定义及初始化,
引用就和普通变量名一样,被赋予了“实”语义,即代表它的目标,而不是别名本身

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值