使用以下代码:
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;
(关于元素复制)
答案 0 :(得分:1)
是肯定的。
现在,如果你只想复制一个对列表的引用(就像你在C#或Java等语言中那样)然后传递一个shared_ptr,那么你将拥有一个包含2个引用的列表。
C / C ++中的所有变量赋值都是通过值完成的,即使传递的变量是指针(例如4字节变量)。其他语言是相同的,只是他们用他们的语言结构来掩盖它。