我见过一些看起来像这样的C ++:
const Foo*& ptr = GetPointerToFoo();
这似乎做同样的工作:
const Foo* ptr = GetPointerToFoo();
甚至:
Foo* ptr = GetPointerToFoo();
第一个例子中&
的用途是什么?它是否通过引用传递GetPointerToFoo()
返回的值?这有什么用?是否只是让它运行得更快,以便不需要复制这个指针?如果是这样,对于速度的极小增加似乎是一个复杂的实现......或者还有其他理由在这里使用&
吗?
答案 0 :(得分:3)
const Foo*& ptr
:引用使指针本身可变。该
调用者可以修改内部指针(例如,对nullptr),但不能修改内部内容(这可能是无用的)。const Foo* ptr
:指向不可变内容的指针。来电者可以
不要修改内部指针。Foo* ptr
:指向可变内容的指针。调用者可以修改
内部内容,但不是内部指针。注意:通过引用返回指针是另一个间接,并使代码不会更快。
注意:我假设问题中有三个不同的GetPointerToFoo()
。