INT 如何在 C++ 中作为 INT& 返回?
how is INT returned as INT& in c++?
我是一个 C++ 初学者,这段代码让我很困惑:
int global = 100;
int& setGlobal()
{
return global;
}
int &a=setGlobal() ;
int main(void){
a=a+5;
std::cout<<global<<std::endl;
}
setGlobal的return类型是int&,但是global是一个 int.
- 请向我解释一下它是如何工作的?
- 不应该是return&global吗?
我理解的代码是这样的:
int global = 100;
int& x=global;
int& setGlobal()
{
x+10;
return x;
}
int main(void){
x=x+10;
std::cout<<global<<std::endl;
}
也许我的问题出在参考文献上。
return 类型的 T&
为您提供 T
.
类型的 returned 对象的引用
你的情况
int& setGlobal()
{
return global;
}
returns 对全局的引用 (int&
)。基本上是别名,是访问同一变量的另一种方式。
这意味着
int &a=setGlobal() ;
将 a
设置为对 global
的引用,对 a
的任何操作都会反映在 global
。
不足为奇
int main(void){
a=a+5;
std::cout<<global<<std::endl;
}
打印 105。a
和 global
在您的 main
范围内可以有效互换(因为一个是另一个的别名)。
如果 setGlobal
returned &global
,它将 returning global
的 地址 .地址是变量在内存中的实际位置,它不是别名。如果您想使用指针,您的代码将如下所示:
#include <iostream>
int global = 100;
int* setGlobal()
{
return &global;
}
int* a=setGlobal() ;
int main(void){
*a=*a+5;
std::cout<<global<<std::endl;
}
请注意我们无法直接使用 a
访问 global
的内容(它只是一个地址)。我们必须先取消引用它。
而且,您还应该知道,由于 setGlobal()
return 在您的示例中是对 global
的引用,它可以直接用作左值来访问 global
像这样:
setGlobal() += 5;
将上述语句放在打印之前将导致显示“110”。好玩的东西!我邀请您在空闲时间阅读有关左值和右值的内容,作为您 C++ 之旅的下一步!
我是一个 C++ 初学者,这段代码让我很困惑:
int global = 100;
int& setGlobal()
{
return global;
}
int &a=setGlobal() ;
int main(void){
a=a+5;
std::cout<<global<<std::endl;
}
setGlobal的return类型是int&,但是global是一个 int.
- 请向我解释一下它是如何工作的?
- 不应该是return&global吗?
我理解的代码是这样的:
int global = 100;
int& x=global;
int& setGlobal()
{
x+10;
return x;
}
int main(void){
x=x+10;
std::cout<<global<<std::endl;
}
也许我的问题出在参考文献上。
return 类型的 T&
为您提供 T
.
你的情况
int& setGlobal()
{
return global;
}
returns 对全局的引用 (int&
)。基本上是别名,是访问同一变量的另一种方式。
这意味着
int &a=setGlobal() ;
将 a
设置为对 global
的引用,对 a
的任何操作都会反映在 global
。
不足为奇
int main(void){
a=a+5;
std::cout<<global<<std::endl;
}
打印 105。a
和 global
在您的 main
范围内可以有效互换(因为一个是另一个的别名)。
如果 setGlobal
returned &global
,它将 returning global
的 地址 .地址是变量在内存中的实际位置,它不是别名。如果您想使用指针,您的代码将如下所示:
#include <iostream>
int global = 100;
int* setGlobal()
{
return &global;
}
int* a=setGlobal() ;
int main(void){
*a=*a+5;
std::cout<<global<<std::endl;
}
请注意我们无法直接使用 a
访问 global
的内容(它只是一个地址)。我们必须先取消引用它。
而且,您还应该知道,由于 setGlobal()
return 在您的示例中是对 global
的引用,它可以直接用作左值来访问 global
像这样:
setGlobal() += 5;
将上述语句放在打印之前将导致显示“110”。好玩的东西!我邀请您在空闲时间阅读有关左值和右值的内容,作为您 C++ 之旅的下一步!