C++ 引用和请求变量地址之间的区别

C++ 引用和请求变量地址之间的区别,c++,reference,memory-address,C++,Reference,Memory Address,在重载运算符练习的框架中,我发现了各种用于引用“Type&variable”和I变量寻址“Type&variable”的编码方法 Duree.h下的原型如下(恒定参考): 我从这段代码中了解到,参数和实例都受引用的约束(这意味着在执行方法时,它们(参数和实例)将被直接修改-除非为参数集成了const-) 在Duree.cpp下,下游方法如下: Duree& Duree::operator+=(const Duree &duree2) { XXX } 我知道这个实例需要引用,但这

在重载运算符练习的框架中,我发现了各种用于引用“Type&variable”和I变量寻址“Type&variable”的编码方法

Duree.h下的原型如下(恒定参考):

我从这段代码中了解到,参数和实例都受引用的约束(这意味着在执行方法时,它们(参数和实例)将被直接修改-除非为参数集成了const-)

在Duree.cpp下,下游方法如下:

Duree& Duree::operator+=(const Duree &duree2)
{
XXX
}
我知道这个实例需要引用,但这里的参数似乎是duree2的地址。代码似乎运行良好。这是否与以下含义相同:

Duree& Duree::operator+=(const Duree& duree2)
    {
    XXX
    }
或者在编译过程中,将“&”添加到类型或变量之间是否存在根本区别


谢谢

空格只是一个空格,只不过是一个标记分隔符而已。(您甚至可以省略这两个空格,
T&T
是有效的。)

附加到类型或变量的约定最初来自C:

int* x;
这使类型看起来像
int*

但是,这是行不通的:

int* x, y;
在这种情况下,
y
被视为正常的
int

因此,一些人开始喜欢这种风格:

int *x, *y;
这声明了两个指针


<> > C++引用中的语义基本相同,只是格式约定。

<代码>这是否与…< /代码>是相同的意思。是不是意味着我可以写和Duree Duree::操作符+=(const & dure dure2)?它与<代码> char *弗莱德相同;代码>和
char*fred声明变量时。没有(本质上的)区别,只是偏好的问题代币之间的空白在几乎所有情况下都不重要。在大多数情况下,您不能交换两个令牌,因此,
const&Duree duree2
无效。维科,不,不是那样的,只是空间的大小无关紧要。一个好的练习是从右到左阅读它们:
const Duree&duree2
-“duree2是对Duree常量对象的引用”
int *x, *y;