读书人

关于摘引的疑惑

发布时间: 2013-10-30 12:56:22 作者: rapoo

关于引用的疑惑
C++ Primer P51 上说

“不能定义引用类型的引用,但可以定义任何其他类型的引用。”

这句话该怎么理解,是指不能定义已经是引用的引用吗?比如下面代码:


int val = 25;
int &refval = val; // refval是val的引用
int &refval2 = refval; // refval2是refval的引用,引用的引用
refval--;
cout << val << endl;
refval2--;
cout << val << endl;


编译发现通过,意思是可以这样使用,那就是我理解出错了,求解释,谢谢! c++ 引用
[解决办法]
并不是对引用的引用,只是两个引用指向了同一个变量
[解决办法]
int val = 25;
int &refval = val; // refval是val的引用
// 引用的引用这样定义
int&& refRefVal; // 这样就是不可以的了
在C++11里面这样写叫做右值引用(move语意),可以做函数参数,这是题外话了,和引用的引用没有关系
[解决办法]
引用:
refval2不是refval的引用,是val的引用
你永远无法创建refval的引用


别忘了,引用一旦建立,对引用的所有操作都视为对原对象的操作
refval是val的引用,所以int &refval2 = refval其实是int &refval2 = val
[解决办法]
这句话,变化着说就是,你的小名只有一个,张三,张三也是可以有小名的,比如李四。也就是说你不能即使张三又是李四!

读书人网 >C++

热点推荐