【发布时间】:2010-10-10 10:40:51
【问题描述】:
它们之间是否存在某种微妙的区别:
void a1(float &b) {
b=1;
};
a1(b);
和
void a1(float *b) {
(*b)=1;
};
a1(&b);
?
它们都做同样的事情(或者从 main() 看来),但第一个显然更短,但是我看到的大多数代码都使用第二种表示法。有区别吗?也许万一它是一些对象而不是浮动?
【问题讨论】:
-
现在试着弄清楚 C++0x 中的 void a1(float &&b) 是什么意思。 :)
-
如果它也能解释为什么 LHS & 在某些情况下可能比 * 更可取,或者如果我们有 * 作为参考,甚至根本不需要它,那就太好了。
-
@T.Webster:引用是不可变的。这意味着当您创建一个时,它肯定是指某物(因此不能为 NULL,编译器会强制您明确指定它将引用的内容),并且一旦您创建了它,它就永远不能引用其他任何东西。它们更安全,因为您不会在无意中意外地做指针算术等愚蠢的事情。
-
@Flow 我认为这个问题应该保留,因为我正在寻找这个确切的点,并且除非我访问过这个,否则不会知道一个指的是指针和一个指的是通过引用传递页。感谢您提供指向另一个问题的链接!