[英]Reference return and rvalue
我沒有這本書中的代碼片段:
template <typename Resource, typename Identifier>
Resource& ResourceHolder<Resource, Identifier>::get(Identifier id)
{
auto found = mResourceMap.find(id);
assert(found != mResourceMap.end());
return *found->second;
}
當它是普通迭代器而不是指針時,為什么要取消引用找到的變量? 然后就像訪問int obj = new Obj();一樣對其進行訪問。 &obj-> someVar;
本頁http://www.cplusplus.com/reference/iterator/上的cpp參考說,您可以取消引用迭代器作為右值。
我開始閱讀此頁面http://thbecker.net/articles/rvalue_references/section_01.html
這是一篇很好的文章,但是有點密集,任何人都可以在我提供的示例代碼的上下文中闡明這一點?
*found->second
正在取消引用found->second
返回的指針。 ->
運算符的優先級比*
(請參閱運算符的優先級以獲取完整的列表),因此該語句實際上與*(found->second)
,而不是您所想的(*found)->second
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.