c++ - 在插入列表之前重复使用相同的字符串似乎是按值传递的?

标签 c++ stl

list<string> l;
string s;

getline(cin, s);
l.push_back(s);
getline(cin, s);
l.push_back(s);

使用输入

123
test

打印列表“l”结果:

123
test

不应该打印:

test
test

我对为什么按值传递字符串感到有点困惑。

最佳答案

push_back 复制传递给它的字符串对象s。因此,您对 s 所做的任何修改都不会影响推回值。

关于c++ - 在插入列表之前重复使用相同的字符串似乎是按值传递的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4263991/

相关文章:

c++ - OpenGL - 在一个函数中加载多个纹理

c++ - 为什么基类的大小显示为 16 字节?

c++ - 在 gtkmm 中找不到 GDK::InterpType 成员

矩阵类的 C++ 自定义迭代器

c++ - 如何使用mmap指向STL类型?

c++ - 在 boost::asio::io_service 上调用运行时崩溃

C++ "undefined reference to class::function"

c++ - 使用 C++11/14 正确定义 DLL 接口(interface)

c++ - 为什么 std::rotate 这么快?

c++ - C++ STL中set的 'insert'函数的原理是什么?