首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是C中的引用?

什么是C中的引用?
EN

Stack Overflow用户
提问于 2010-08-17 13:08:05
回答 9查看 811关注 0票数 11

我刚刚开始使用C++,遇到了一些参考资料,而且还没有完全理解。

引用,正如我所读到的,是object.Why使用的替代名称,而不是直接访问对象,因为引用上的任何操作都直接反映在对象上.?

  1. 为什么和何时使用?
  2. ist是否像每次使用时引用的常量指针.?

而且,上面说

代码语言:javascript
运行
复制
 double& dr = 1;  ----  says it is an error (some lavalue needed) 
 const double& cdr = 1;  ---- says it is ok. 

我不明白,properly..So,请解释一下为什么.

谢谢.)

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-08-17 13:18:11

为什么要使用它而不是直接访问对象,因为引用上的任何操作都直接反映在对象上.?

C++按值传递参数,这意味着如果您有如下函数:

代码语言:javascript
运行
复制
void foo(MyObject o) { ... }

默认情况下,C++将复制一个MyObject,而不是直接使用传入的对象。因此,引用的一种用法是确保您正在处理同一个对象:

代码语言:javascript
运行
复制
void foo(MyObject &o) { ...}

或者,如果您不修改o

代码语言:javascript
运行
复制
void foo(const MyObject &o) { ... }
票数 11
EN

Stack Overflow用户

发布于 2010-08-17 13:11:46

引用基本上是一个看起来像对象的指针。获得一个空引用非常困难,尽管您可以通过循环创建一个引用。

关于您的示例,1是一个rvalue或一个结果。它只是一个临时变量,不能修改。因此,您不能接受非const引用。但是,您可以对其进行const引用。这意味着您不能更改引用的值。

下面是一个创建空引用的示例。别这么做!

代码语言:javascript
运行
复制
int * x = (int *)NULL;
int & y = *x;
票数 3
EN

Stack Overflow用户

发布于 2010-08-17 13:17:17

赞成。仅仅使用引用作为别名并不是很有用。如果您认为它是一个不可变的指针,它会更有用。但实际上没那么有用。

实际上,它用于定义干净的接口。例如,当您定义:

代码语言:javascript
运行
复制
int foo(const int& param);

您说param是foo中的只读参数。

不要忘记,您必须为引用赋值。

有关更多信息,请参见参考资料上的C++辉石岩

my2c

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

https://stackoverflow.com/questions/3502687

复制
相关文章

相似问题

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