[英]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::pair
, first
一個是插入元素的迭代器, second
是bool
說明該放置是否成功。
如果您確定second
為true
則first
的迭代器指向映射內的元素,因此可以對該對象進行引用。
只需確保myMap
任何getObject()
調用myMap
。
只要myMap的范圍是全局的,該引用將始終有效,即,它不會指向垃圾,而是指向標准地圖中的實際元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.