Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        6年前关闭。
                                                                                            
                
        
使用以下代码:

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;(对于元素复制)

最佳答案

是。

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

即使要传递的变量是指针(例如4字节变量),C / C ++中的所有变量分配也都按值完成。其他语言是相同的,只是它们用其语言结构掩盖了这一点。

10-08 11:07