[英]Returning a pointer by reference
我看過一些看起來像這樣的C ++:
const Foo*& ptr = GetPointerToFoo();
似乎與以下功能相同:
const Foo* ptr = GetPointerToFoo();
甚至:
Foo* ptr = GetPointerToFoo();
在第一個示例中, &
的用途是什么? 是否通過引用傳遞GetPointerToFoo()
返回的值? 這有什么用? 只是為了使其運行更快,而不需要復制此指針? 如果是這樣的話,這似乎是一個非常復雜的實現,只是實現了很小的速度提升……還是在這里使用&
其他原因?
const Foo*& ptr
:該引用使指針本身可變。 調用者可以修改內部指針(例如,指向nullptr),但不能修改內部內容(可能沒有用)。 const Foo* ptr
:指向不變內容的指針。 調用者無法修改內部指針。 Foo* ptr
:指向可變內容的指針。 調用者可以修改內部內容,但不能修改內部指針。 注意:通過引用返回指針是另一種間接方式,會使代碼運行不快。
注意:我假設問題中有三個不同的GetPointerToFoo()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.