b***i 发帖数: 3043 | 1 假如,p 是个指针,指向数据结构class{public int aa, int bb;};
我要int &x=p->aa;
但是,我需要判断p的值
即
if (p)
int &x=p->aa;
但这样,会不会造成 x不能在后续程序中使用,因为在if 内?
谢谢 |
f*****Q 发帖数: 1912 | |
p**s 发帖数: 2707 | 3 会
【在 b***i 的大作中提到】 : 假如,p 是个指针,指向数据结构class{public int aa, int bb;}; : 我要int &x=p->aa; : 但是,我需要判断p的值 : 即 : if (p) : int &x=p->aa; : 但这样,会不会造成 x不能在后续程序中使用,因为在if 内? : 谢谢
|
t****t 发帖数: 6806 | 4 不是扣的问题.
他的问题是, 如果(p==0), 那x=?
正确的做法是
int& x=(p? ... : ...)
用reference的问题是, 不容易有个非法值
【在 f*****Q 的大作中提到】 : 写程序不必太扣。
|
b***i 发帖数: 3043 | 5 就是说可以先定义reference, 因为只是给编译器一个通知,以后见到x,就使用p->aa
所以,可以在if (p==0) 之后return, 或者生成新的p即可。
多谢
【在 t****t 的大作中提到】 : 不是扣的问题. : 他的问题是, 如果(p==0), 那x=? : 正确的做法是 : int& x=(p? ... : ...) : 用reference的问题是, 不容易有个非法值
|
t****t 发帖数: 6806 | 6 你这样太危险了, 我几乎可以肯定这是undefined
aa
【在 b***i 的大作中提到】 : 就是说可以先定义reference, 因为只是给编译器一个通知,以后见到x,就使用p->aa : 所以,可以在if (p==0) 之后return, 或者生成新的p即可。 : 多谢
|
r****t 发帖数: 10904 | 7 先定义 reference 是啥意思,举个例子?
aa
【在 b***i 的大作中提到】 : 就是说可以先定义reference, 因为只是给编译器一个通知,以后见到x,就使用p->aa : 所以,可以在if (p==0) 之后return, 或者生成新的p即可。 : 多谢
|
t****t 发帖数: 6806 | 8 他那个做法不好, 不要学他
【在 r****t 的大作中提到】 : 先定义 reference 是啥意思,举个例子? : : aa
|
b***i 发帖数: 3043 | 9 对,不能先定义reference,在检查指针。
似乎c++如果随意改变reference的源是没有问题的,但是没有实现。是这样吗
比如
int &x=y;
....
..
if (...) return;
int &x=z;
...
【在 t****t 的大作中提到】 : 你这样太危险了, 我几乎可以肯定这是undefined : : aa
|
t****t 发帖数: 6806 | 10 reference一旦在初始化时被绑定, 就不能更改. 以后的赋值就对被引用的那个对象做.
如果用两次
int&x=y;
int&x=z;
就是重复定义了(这个随便想想也知道吧?)
【在 b***i 的大作中提到】 : 对,不能先定义reference,在检查指针。 : 似乎c++如果随意改变reference的源是没有问题的,但是没有实现。是这样吗 : 比如 : int &x=y; : .... : .. : if (...) return; : int &x=z; : ...
|