引用---基本特性

来源:互联网 发布:安庆市网络问政 编辑:程序博客网 时间:2024/06/18 08:07

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

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

原创粉丝点击