struct Person {
string name;
};
Person* p = ...
假設沒有運營商超載。
哪個更有效率?(如果有的話)?
(*p).name
與p->name
某處在我的後腦勺,我聽到了一些鐘聲,那*
引用操作可以創建對象的臨時副本;這是真的?
這個問題的背景是類似案例:
Person& Person::someFunction(){
...
return *this;
}
,我開始懷疑,如果改變結果Person*
最後一行簡單return this
將使任何區別(在性能)?
在這一點上,你應該更加擔心可讀性,而''>'是更常見的語法糖,'(* i).m'在很多地方都被忽視了。只有在任何分析表明可能存在與此相關的問題時,您才應該開始擔心其效率。 – PlasmaHH 2013-05-03 09:22:02
我希望編譯器產生完全相同的結果。你可以自己回答這個問題,編譯兩個代碼到彙編器並檢查生成的代碼。 – bluehallu 2013-05-03 09:22:22
我問過這個問題是因爲*我描述過的背景*許多基本的操作符通常會返回一個對自己的引用,而且我經常會看到它們返回'* this'; – 2013-05-03 09:23:45