2 kieranyu kieranyu 于 2014.08.10 18:43 提问

C++的,关于指向临时变量的引用?

int x = 1;
int y = 1;

const int & z= x + y;
int a = 1; // 没有作用,只是为了能在此处可以设置断点;
问题是:
1、如果没有const编译不过 ?
2、我们知道引用是“别名”,那么z指向的哪个变量,如果指向临时变量(x+y),那么运行到第四句之后,那么临时变量是不是也是释放掉了,这时候z指向什么呢?
3、在VS2010调试的结果是,在第四行设置断点,能看到 z = 2, 而且 &z = 0x002afc00地址也存在,想问问什么情况?

1个回答

liyun123gx
liyun123gx   2014.08.12 18:53

1.对于 int &z = x+y,编译器报错:'initializing' : cannot convert from 'int' to 'int &',什么原因我也不知道
2.临时变量只在这个函数体有作用,运行到第四句后临时变量没有释放
3.个人认为是x+y会先产生一个临时变量,然后z是这个临时变量的引用,所以z是有值的

kieranyu
kieranyu string s,t; string& v = s + t; 如果一个临时变量被绑定到一个引用 ,这个临时变量应该留到这个临时变量和这个引用那个先超出变量的作用域后才销毁
3 年多之前 回复
kieranyu
kieranyu string s,t; string v = 1 ? s + t : s - t; 我查到资料说是运行完之后就释放掉临时变量;
3 年多之前 回复
liyun123gx
liyun123gx 临时变量的作用域是所在的函数体呢,还是所在的语句呢?自己也不明白了。不过,C++规定:不允许非const 引用指向需要临时对象的对象或值。
3 年多之前 回复
kieranyu
kieranyu 1、我自己也在查资料,看到说临时变量都是const类型,因为不能从const初始化非const的引用;
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!