如果返回的是個物件 那麼 在呼叫該函式的時候先由主函式開闢記憶體然後當做引數將該位址存進去。
如果引數為物件然後呼叫的時候將tmp拷貝構造給那個空間。(造成大量的析構和建構函式)
解決方法
首先啊引數盡量是引用;減少形參的構造和引用
第二點如果返回物件盡量返回臨時物件(因為當return的時候直接構造零時變數在main中減少了臨時變數的生成)
如果使用的是初始化拷貝構造 返回的是臨時變數的話的 直接是拷貝構造給該物件(不需要主函式的臨時量)
如果返回的不是零時量的話如果初始化也呼叫拷貝建構函式
主要總結三點
1.引數為引用
2 返回值為臨時變數
3 直接使用返回值去初始化物件
C 返回值優化
當函式需要返回物件時,通常有兩種寫法,一種是直接在return語句中返回乙個物件,一種是先構造好乙個物件,然後在return中將其返回。以下 為例 include include using namespace std struct node node const node n name n.nam...
返回值優化
通過傳值方式返回要建立新物件時,應注意使用的形式,例如在operator return integer left.l right.l 咋看起來這像是乙個 對乙個建構函式的呼叫 其實並非如此。這是臨時物件語法,它是在說 建立乙個臨時integer物件並返回它 據此我們可能認為如果建立乙個有名字的區域性...
返回值優化
返回值優化,是一種屬於編譯器的技術,它通過轉換源 和物件的建立來加快源 的執行速度。rvo return value optimization。class complex 複數 complex const complex a real a.real imag a.imag complex opera...