l********n 发帖数: 54 | 1 http://www.parashift.com/c++-faq-lite/references.html#faq-8.5
在c++ faq中提道了一个使用reference的规则。说是如果一个reference绑定一个
object,这个reference就不能被reseat另一个object。 然而pointer就可以。
我的理解是一旦reference被initialize了,它就不能去引用其他的object了。如下例:
int a=10;
int b = 20;
int& c = a;
c = b; // 按照上面的规则,c=b应该是非法。
不过我试了一下,发现上面的code编译运行都没有问题。不知道是不是我理解出错了。
又试了试用class object,结果还是同样的。困惑中。。。
http://www.ideone.com/APkpW |
s*********t 发帖数: 1663 | 2 你c=b之后cout<
例:
【在 l********n 的大作中提到】 : http://www.parashift.com/c++-faq-lite/references.html#faq-8.5 : 在c++ faq中提道了一个使用reference的规则。说是如果一个reference绑定一个 : object,这个reference就不能被reseat另一个object。 然而pointer就可以。 : 我的理解是一旦reference被initialize了,它就不能去引用其他的object了。如下例: : int a=10; : int b = 20; : int& c = a; : c = b; // 按照上面的规则,c=b应该是非法。 : 不过我试了一下,发现上面的code编译运行都没有问题。不知道是不是我理解出错了。 : 又试了试用class object,结果还是同样的。困惑中。。。
|
l********n 发帖数: 54 | |
l*******o 发帖数: 791 | 4 int & c=a 里面的“=”是initialization的意思。c=a的等号是assignment的意思。不
是一回事 |
g*****e 发帖数: 54 | |
l********n 发帖数: 54 | 6 是这样的
int& c = a; 是initialization。在此之前的c不指向任何变量。在这之后c变成了a的
alias, c就是a, a就是c. a, c是一回事,就是名字不同。
所以当c=b, 就不是initialization, 而是assignment, 所以 c=20, a=20. |
b******n 发帖数: 592 | 7 int b;
int &c = b; // c is reference to b
c = a; // since c is reference to b, this is the same as b=a;
【在 g*****e 的大作中提到】 : 没看懂,C++新手,哪位给解释下?谢谢。
|
g*****k 发帖数: 623 | 8 这是C问题
例:
【在 l********n 的大作中提到】 : http://www.parashift.com/c++-faq-lite/references.html#faq-8.5 : 在c++ faq中提道了一个使用reference的规则。说是如果一个reference绑定一个 : object,这个reference就不能被reseat另一个object。 然而pointer就可以。 : 我的理解是一旦reference被initialize了,它就不能去引用其他的object了。如下例: : int a=10; : int b = 20; : int& c = a; : c = b; // 按照上面的规则,c=b应该是非法。 : 不过我试了一下,发现上面的code编译运行都没有问题。不知道是不是我理解出错了。 : 又试了试用class object,结果还是同样的。困惑中。。。
|