首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >初始化C++中的引用

初始化C++中的引用
EN

Stack Overflow用户
提问于 2012-07-21 06:45:30
回答 3查看 121关注 0票数 3

如果我想让一个指针指向另一个变量,我可以通过给变量指定地址&来实现。

代码语言:javascript
复制
int foo = 10;
int *bar = &foo;

现在,如果我遵循上面相同的逻辑,而不是创建一个引用类型。

代码语言:javascript
复制
int foo = 10;
int &bar = &foo; 

我认为这应该行得通,但它没有。为什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-21 06:58:49

因为指针和引用不是一回事。你可以把引用看作是“别名”或“别名”的意思。

换句话说,在您的示例中,bar只是foo的另一个名称。在执行int &bar = foo;时,您希望bar成为foo的另一个名称,而不希望将foo的地址分配给bar。但是,指针存储它所指向的对象的地址,因此对于指针,您需要address-of运算符来获取foo的地址并将其分配给bar指针。

票数 3
EN

Stack Overflow用户

发布于 2012-07-21 06:46:59

语法是

代码语言:javascript
复制
int &bar = foo;

参见wikipedia

票数 4
EN

Stack Overflow用户

发布于 2012-07-21 06:49:59

它不起作用,因为引用需要用它所引用的相同类型进行初始化。在这种情况下:

代码语言:javascript
复制
int foo = 10;
int &bar = foo;

当您尝试以这种方式初始化它时:

代码语言:javascript
复制
int &bar = &foo;

您正在尝试使用指向int的指针来初始化int引用。类型不匹配。

引用与指针不同,尽管编译器可以将其实现为幕后的指针。一个引用基本上是这样说的:“当我提到bar时,我实际上是在谈论foo”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11587880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档