【问题标题】:Declare object on heap and then passing it by reference?在堆上声明对象然后通过引用传递它?
【发布时间】:2013-10-12 01:10:47
【问题描述】:

如果我要像这样在堆上声明一个对象:

X* x = new X();
func(?);

void func(X& x);

如何将x 传递给func(),以便func() 可以接收到x 的引用(而不是指针)?

【问题讨论】:

  • 您想要的不仅仅是这里的两个答案吗?在我看来,您似乎知道如何提出要求,但不知何故忘记了如何接受。我建议对您的所有问题进行审查。

标签: c++ pointers reference pass-by-reference


【解决方案1】:

取消引用指针并像这样传递它:

func(*x);

您的函数必须传递 X 类型的东西。对象通过引用传递这一事实并不会改变您调用它的方式。由于 x 具有 X* 类型,因此您需要取消对 x 的引用才能获得 X 类型的东西。

为了说明,假设你有

void func1(X& x);
void func2(const X& x);
void func3(X x);
void func4(const X x);

对于每种情况,您都可以以相同的方式调用函数。

【讨论】:

    【解决方案2】:

    你必须像这样取消引用它:func(*x)

    【讨论】:

      猜你喜欢
      • 2012-01-26
      • 2023-03-09
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 2014-04-11
      相关资源
      最近更新 更多