簡體   English   中英

如何通過共享指針獲取Object?

[英]How to get the Object being pointed by a shared pointer?

我有一個問題。 我們可以直接獲得共享指針指向的對象嗎? 或者我們應該通過get()調用獲取底層RAW指針然后訪問相應的對象?

您有兩個選項可以檢索對shared_ptr指向的對象的引用。 假設您有一個名為ptrshared_ptr變量。 您可以使用*ptr*ptr.get()獲取引用。 這兩個應該是等價的,但第一個是首選的。

原因是你真的試圖模仿原始指針的取消引用操作。 表達*ptr讀取“給我的數據所指向ptr ”,而表述*ptr.get() “給我的數據由原始指針,其被包裹內部指向ptr ”。 顯然,第一個更清楚地描述了你的意圖。

另一個原因是shared_ptr::get()旨在用於您實際需要訪問原始指針的場景中。 在你的情況下,你不需要它,所以不要求它。 只需跳過整個原始指針,繼續生活在更安全的shared_ptr世界中。

Ken的答案在上面 (或下面,取決於這些是如何排序的)是很好的。 我沒有足夠的聲譽來評論,否則我會。

我只想補充一點,您也可以直接在shared_ptr上使用->運算符來訪問它指向的對象的成員。

boost文檔提供了很好的概述。

編輯

現在C ++ 11被廣泛采用, std::shared_ptr應該優先於Boost版本。 請在此處查看解除引用操作符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM