臨時變量、局部變量,return的效率

如果函數返回值是一個對象,要考慮 return 語句的效率。例如     
    return String(s1 + s2);
這是臨時對象的語法,表示“創建一個臨時對象並返回它” 。不要以爲它與“先創建一個局部對象 temp 並返回它的結果”是等價的,如
String temp(s1 + s2);
return temp;
實質不然,上述代碼將發生三件事。首先,temp 對象被創建,同時完成初始化;然後拷貝構造函數把 temp 拷貝到保存返回值的外部存儲單元中;最後,temp 在函數結束時被銷燬(調用析構函數) 。然而“創建一個臨時對象並返回它”的過程是不同的,編譯器直接把臨時對象創建並初始化在外部存儲單元中,省去了拷貝和析構的化費,提高了
效率。
類似地,我們不要將  
return int(x + y); // 創建一個臨時變量並返回它
寫成
int temp = x + y;
return temp;

由於內部數據類型如 int,float,double 的變量不存在構造函數與析構函數, 雖然該 “臨時變量的語法”不會提高多少效率,但是程序更加簡潔易讀。

發佈了15 篇原創文章 · 獲贊 1 · 訪問量 2194
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章