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'析構函數在對象作用域的末尾被調用。 –