給出:爲什麼你聲明/創建一個單獨的變量來引用調用,而不是隻是在函數調用中創建一個自動對象?
void foo(std::string &s) {
...
}
爲什麼會出現這種結果的一個編譯器錯誤:
foo(std::string("fail"));
這裏,因爲這是罰款:
std::string s("winning");
foo(s);
失敗情況下的錯誤是 error: no matching function for call to ‘foo(std::string)’
in winni ng的情況下,我認爲編譯器無論如何都會優化出s
。我在這裏錯過了什麼概念?
從修改臨時字符串中獲得什麼? – chris 2014-10-06 17:40:07
我沒有修改它。也許foo(string)正在調用somehashmap.find(string)。 – marathon 2014-10-06 17:42:53
@marathon那麼它應該是const。 – user1810087 2014-10-06 17:45:27