-1
可以通過無名char[]
與std::string&
參數一起使用嗎?nameless char [] to std :: string&reference
#include <string>
void func(std::string&);
int main()
{
func("nameless");
return 0;
}
可以通過無名char[]
與std::string&
參數一起使用嗎?nameless char [] to std :: string&reference
#include <string>
void func(std::string&);
int main()
{
func("nameless");
return 0;
}
在你的例子中,因爲你使用了一個非const的左值引用,所以這是不行的。一個臨時字符串將從字符串文字中創建,並且臨時對象只能綁定到常量左值引用或右值引用。
這會工作:
void func(const std::string&);
void func(std::string&&);
注意:一些編譯器(著名VS)會接受您的代碼,因爲它們允許結合非const的左值來臨時對象的引用爲「延伸」。但這不是標準的C++,所以如果你想編寫可移植的代碼,你應該避免它。另外,使用它意味着您必須向供應商瞭解語義。
vc2008允許它。爲什麼? – Ivars
@Ivars一個臭名昭着的編譯器「擴展」。 – juanchopanza
是'void func(const std :: string&)'標準? – Ivars