【问题标题】:c++ references - Is there Memory Allocated? [duplicate]c++ 参考 - 是否分配了内存? [复制]
【发布时间】:2016-03-04 12:32:07
【问题描述】:

考虑

1.

MyClass &myRef;

在此声明中是否为 myRef 分配了内存? 查找myRef地址的语法是什么?

2。 那么如果我这样做了

myRef = someOtherRefToTheSameClass

谁负责执行这项任务?

【问题讨论】:

  • 首先MyClass &myRef; 不会编译。如果您询问引用是否占用空间,请参阅:stackoverflow.com/questions/31521116/…
  • 我的班级 &_foo;这会编译吗?
  • @OneGuyInDc MyClass &myRef; 将在类声明中编译,但需要在构造函数的初始化列表中进行初始化。否则,必须始终在声明点初始化引用。无法重新分配引用。

标签: c++ pass-by-reference


【解决方案1】:

引用没有地址。引用本质上是另一个变量的标签,如果您获取引用的地址,您将获得它所引用的事物的地址。

考虑:

void function (bool b, int x, int y)
{
    int& ref = b ? x : y;

这里,&ref 的计算结果要么与 &x 相同,要么与 &y 相同,具体取决于 b 的值。

当您在赋值左侧使用引用时,它的作用与您使用基础变量相同。所以如果你有:

void function (SomeClass y)
{
    SomeClass &z (y);

现在,因为 z 是对 y 的引用,y = foo();z = foo(); 做同样的事情。

【讨论】:

  • 这不能回答问题的任何一部分。
  • @cdonner 我想我们对这个问题的理解不同。我基本上理解这个问题,“我不理解参考,所以这些似乎是要问的正确问题”,所以我向 OP 提供了关于参考如何工作的足够信息,这样这些问题就不再有意义了。跨度>
  • 很公平。目前尚不清楚 OP 想要实现什么。
猜你喜欢
  • 1970-01-01
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 2010-10-15
  • 2017-01-30
相关资源
最近更新 更多