[英]How to get the Object being pointed by a shared pointer?
我有一個問題。 我們可以直接獲得共享指針指向的對象嗎? 或者我們應該通過get()
調用獲取底層RAW指針然后訪問相應的對象?
您有兩個選項可以檢索對shared_ptr
指向的對象的引用。 假設您有一個名為ptr
的shared_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.