What does & in C++ function arguments list mean?
Possible Duplicate:
What are the differences between pointer variable and reference variable in C++?
What does a function prototype mean with an ampersand in it?
据我所知,
1 | void bar(int &x) { ... } |
似乎是指通过
1 2 3 | void bar(int *x) { ... } // then call by bar(&x); |
除了时间更长…我还注意到,如果我使用第二种方法,我需要使用
StruouUp给出C++引用的原因是运算符重载。
http://www.stroustrup.com/bs_faq2.html指针和引用
在您的示例函数
然而,当操作符重载被添加到C++时,Stroustrup认为使用带有指针的重载运算符是非常不雅的(他的单词中的"丑陋")。
引用在功能上比指针有一些优势,例如临时对象可以绑定到常量引用,但不能对其应用
因此,一种可能的约定是,当函数计划在返回后将地址存储到某个地方以供将来使用时接受指针,而在不存储地址时接受引用。它不会阻止所有可能的创建悬空指针/引用的方法,但会捕获一个大的指针/引用。但是,在编写函数式代码时,它确实会带来不幸的后果,因此并非所有人都能做到。
I also noticed if I use the 2nd method, I need to use -> as opposed to
. if I pass in a struct... why?
它只是从c.
在C++中,差异对语言是有用的。您可以为类类型重载
引用基本上是一个具有恒定地址的指针,因此它与按地址调用具有相同的效果。这主要是语法上的不同:通过引用调用更方便,因为从调用站点来看,它就像是通过值调用一样(除了必须小心临时性)。