我偶然发现了以下代码并想知道它的优点。
std::string const & thestring( "XYZ" );
这是因为它正在构造对象并通过引用进行引用。我习惯于看到这样的操作。
std::string const theString( "XYZ" );
我想知道它们之间的区别。我相信这个对象不会被早期销毁,因为该对象与引用一起存在于堆栈上。
我偶然发现了以下代码并想知道它的优点。
std::string const & thestring( "XYZ" );
这是因为它正在构造对象并通过引用进行引用。我习惯于看到这样的操作。
std::string const theString( "XYZ" );
我想知道它们之间的区别。我相信这个对象不会被早期销毁,因为该对象与引用一起存在于堆栈上。
这完全取决于包含函数的字符串发生了什么。它需要被保存以供引用。
如果您在函数中有一个变量,该变量存在于函数所属的对象中。
class yourClass {
string a;
string const & yourFunction(string b) {
a = b;
return a;
}
}
void test(const string& value);
如果你传递的是"someString",它将不会被处理为引用,而只是一个值。如果你移除"const",你将会遇到麻烦,并且无法将"someString"作为一个值传递。
const&
变量或函数参数上,此时临时对象的生命周期会延长至该引用的生命周期。但是这种方式无法用于返回值或类属性,因此你需要在那里使用一个命名对象。 - Matthieu M.std::string const&
属性,你就不能将临时字符串绑定到它上面。 - Matthieu M.