簡體   English   中英

參考收益和右值

[英]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.

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