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