通过引用返回指针

时间:2016-01-27 19:02:08

标签: c++

我见过一些看起来像这样的C ++:

const Foo*& ptr = GetPointerToFoo();

这似乎做同样的工作:

const Foo* ptr = GetPointerToFoo();

甚至:

Foo* ptr = GetPointerToFoo();

第一个例子中&的用途是什么?它是否通过引用传递GetPointerToFoo()返回的值?这有什么用?是否只是让它运行得更快,以便不需要复制这个指针?如果是这样,对于速度的极小增加似乎是一个复杂的实现......或者还有其他理由在这里使用&吗?

1 个答案:

答案 0 :(得分:3)

  • const Foo*& ptr:引用使指针本身可变。该 调用者可以修改内部指针(例如,对nullptr),但不能修改内部内容(这可能是无用的)。
  • const Foo* ptr:指向不可变内容的指针。来电者可以 不要修改内部指针。
  • Foo* ptr:指向可变内容的指针。调用者可以修改 内部内容,但不是内部指针。

注意:通过引用返回指针是另一个间接,并使代码不会更快。

注意:我假设问题中有三个不同的GetPointerToFoo()