Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;STL列表';s Push_back按值传递参数?_C++_Stl - Fatal编程技术网

C++ C++;STL列表';s 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

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 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);