c ++:复制到通过引用传递的stl容器

时间:2013-11-06 08:49:22

标签: c++ stl copy containers

使用以下代码:

class MyClass
{
public:
    void GetStrings(list<std::string>& strs)
    {
        strs = m_strings;
    }   

    list<std::string> m_strings;
}

执行m_strings时是否复制了所有strs = m_strings;个元素?

换句话说: 这等于list<std::string>& strs = m_strings;list<std::string> strs = m_strings;(关于元素复制)

1 个答案:

答案 0 :(得分:1)

是肯定的。

现在,如果你只想复制一个对列表的引用(就像你在C#或Java等语言中那样)然后传递一个shared_ptr,那么你将拥有一个包含2个引用的列表。

C / C ++中的所有变量赋值都是通过值完成的,即使传递的变量是指针(例如4字节变量)。其他语言是相同的,只是他们用他们的语言结构来掩盖它。