void fn(string &s)
{
//....
}
//use the function
fn("helloworld");
首先,用const char字符串启动非const字符串是错误的。参考用法
后,我在参数添加常量,它编译。
但它是正确的对堆栈引用临时对象字符串(“HelloWorld”的)?
难道确认字符串( “HelloWorld” 的)被调用?
-
编辑。
如果创建一个临时字符串,编译器如何判断对象的字符串( “HelloWorld” 的)是的std :: string(为const char *)的构造常量?
如果你问如果'string'对象将从'为const char *创建'那么答案是肯定的,你可以放心地使用你的函数内部的字符串。 – Dennis
创建一个临时对象:[由构造函数转换](http://publib.boulder.ibm。COM /信息中心/ comphelp/v8v101/index.jsp的?主题=%2Fcom.ibm.xlcpp8a.doc%2Flanguage%2Fref%2Fcplr384.htm)。当'fn()'返回时,'std :: string'析构函数在对象作用域的末尾被调用。 –