我嘗試下面的代碼:通行證臨時對象函數,採用指針
#include<iostream>
#include<string>
using namespace std;
string f1(string s)
{
return s="f1 called";
}
void f2(string *s)
{
cout<<*s<<endl;
}
int main()
{
string str;
f2(&f1(str));
}
但是這個代碼不編譯。
我認爲是:f1按值返回,所以它創建了臨時的,我正在將其中的地址傳遞給f2。
現在請解釋我在哪裏我想錯了?
但我可以像這樣使用f1(): f1(str)=「happy」; 這裏我使用臨時值作爲l值。 – 2010-06-06 19:29:15
快樂米塔爾,單詞左值可能有點令人困惑 - 它不再意味着「可以站在任務左側的價值」。當你使用'='運算符時,你實際上正在調用字符串對象的成員函數。您可以使用rvalues的成員。 – avakar 2010-06-06 19:31:48
那麼如果字符串有一個明確的運算符&{return this;}會發生什麼? – user168715 2010-06-06 19:50:55