簡體   English   中英

C ++參考返回

[英]C++ reference return

在這個例子中

class Object {
  Object(int val);
}


std::map<unsigned, Object> myMap;
Class Foo {

    Object &getObject (unsigned Id, int val) {

    auto pair = myMap.emplace(std::piecewise_construct, std::forward_as_tuple(Id), std::forward_as_tuple(val));
    if (pair.second) {
      // do something
    }
    else {
      // do another
    }
    return pair.first->second;
  }

}

該對中返回的引用(銷毀了該函數)是否保持有效?

是的,它仍然有效。

emplace返回一個std::pairfirst一個是插入元素的迭代器, secondbool說明該放置是否成功。

如果您確定secondtruefirst的迭代器指向映射內的元素,因此可以對該對象進行引用。

只需確保myMap任何getObject()調用myMap

只要myMap的范圍是全局的,該引用將始終有效,即,它不會指向垃圾,而是指向標准地圖中的實際元素。

暫無
暫無

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

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