参考回报和右值

时间:2013-12-03 23:42:34

标签: c++ c++11

我没有得到这本书中的代码片段:

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-&GT; someVar;

此页面上的cpp参考http://www.cplusplus.com/reference/iterator/ 说你可以将迭代器取消引用为右值。

我开始阅读此页http://thbecker.net/articles/rvalue_references/section_01.html

这是一篇很好的文章,但它有点密集,任何人都可以在我提供的示例代码的上下文中澄清这一点?

1 个答案:

答案 0 :(得分:4)

*found->second取消引用found->second返回的指针。 ->运算符的优先级高于*(有关完整列表,请参阅operator precedence),因此该语句实际上与*(found->second)相同,而不是(*found)->second就像你在想的那样。