C++ C++;STL列表';s Push_back按值传递参数?
c++STL::list的push_back函数将参数作为传递值。但是当参数超出范围时,我仍然能够访问列表的元素C++ C++;STL列表';s Push_back按值传递参数?,c++,stl,C++,Stl,c++STL::list的push_back函数将参数作为传递值。但是当参数超出范围时,我仍然能够访问列表的元素 typedef std::list<MyObject> mylist; void function1() { MyObject obj;<<<< local scope ... mylist.push_back(obj); } void function2() { //On Iterating the lis
typedef std::list<MyObject> mylist;
void function1()
{
MyObject obj;<<<< local scope
...
mylist.push_back(obj);
}
void function2()
{
//On Iterating the list "mylist" able to access objs in the list properly even though the scope of obj is lost in function1.
}
typedef std::list mylist;
无效函数1()
{
MyObject obj;应通过引用传递:
第一个签名接受常量引用但将复制它。第二个签名接受右值引用并将移动它
来源:函数签名是
void push_back (const value_type& val);
并将所传递的值复制到列表中。因此,您可以将其视为“按值传递”(以可操作的方式)。
在C++11中,您还可以
void push_back (value_type&& val);
这是将你的价值转移到你的列表中的一种可能性。谷歌应该在你的优先列表“哪里可以得到帮助”中的堆栈溢出之前进行搜索但是,由于您询问了STL,。和。同样适用于。抱歉,问题可能不完整!我很困惑,因为原型正在引用,但我仍然能够访问列表元素,而参数失去了作用域!!
void push_back (value_type&& val);