【发布时间】:2014-06-09 06:51:10
【问题描述】:
有什么区别:
classConstructor(const std::string theName);
和
classConstructor(const std::string& theName);
由于构造函数只是初始化一个成员,这两个语句有什么区别吗?
【问题讨论】:
标签: c++ reference parameter-passing
有什么区别:
classConstructor(const std::string theName);
和
classConstructor(const std::string& theName);
由于构造函数只是初始化一个成员,这两个语句有什么区别吗?
【问题讨论】:
标签: c++ reference parameter-passing
当您在变量名前使用“&”字符时,这意味着该变量将与传入的参数相同。当我说同样的话,我的意思是,在记忆中。有点像解引用的指针。
这只是一个优化。您将使用相同的内存空间,而不是仅为您的构造函数在内存中创建一个新变量。在这里使用一个简单的字符串,差异可以忽略不计,但想象一下使用一个巨大的对象向量(例如)。
有时将它用作 C 中的指针很有用。您可以在另一个函数中修改变量而无需传递指针。
最后,这被称为“参考”;)
希望你能得到帮助;)
【讨论】:
int function_test(const std::string & str) {do some stuff} 你称之为谎言:function_test("String test") 如果是的话,它可以工作,因为即使你没有在变量中设置它,你的字符串也会在某处的内存中创建。在这种情况下,它只是一个简单的优化;)。但它仍然有效;)