共用方式為


暫存物件

在某些情況下,就必須讓編譯器建立暫存物件。 可以建立這些暫存物件,原因如下:

  • 若要初始化const之基礎參考的型別初始化不同型別的初始設定式的參考。

  • 若要儲存函式的傳回值傳回使用者定義的型別。 只有當您的程式不會複製物件傳回的值,會建立這些暫存檔。 例如:

    UDT Func1();    //  Declare a function that returns a user-defined
                    //   type.
    
    ...
    
    Func1();        //  Call Func1, but discard return value.
                    //  A temporary object is created to store the return
                    //   value.
    

    因為傳回的值不會複製到另一個物件,則會建立一個暫存物件。 較常見的情況建立暫存檔的位置是在運算式的評估期間必須在呼叫多載的運算子函式。 這些多載的運算子函式會傳回使用者定義的型別,通常不會複製到另一個物件。

    請考慮運算式ComplexResult = Complex1 + Complex2 + Complex3。 運算式Complex1 + Complex2評估時,而結果會儲存在暫存物件。 下一步],運算式暫時+ Complex3評估時,而結果複製到ComplexResult (假設工作分派運算子沒有超載)。 

  • 若要儲存結果的型別轉換成使用者定義的型別。 當明確指定型別的物件轉換成使用者定義的型別上時,會將該新物件建構作為一個暫存物件。

暫時的物件都由其點上建立的此時便會毀損的點所定義的存留期。 最後會建立一個以上的暫存物件的任何運算式,終結它們所建立的順序相反。 下表顯示發生解構的點。

暫存物件的解構點

建立暫時的原因

摧毀點

運算式評估的結果

運算式評估所建立的所有暫存檔便會毀損的運算式陳述式結尾 (也就是在分號),或控制的運算式結尾處for, if, while, do,以及switch陳述式。

正在初始化const的參考

如果初始設定式不是左值做為初始化參考相同的型別,暫存基礎物件型別的建立,並以初始化運算式進行初始化。 此暫存物件被終結,終結所繫結的參考物件後,立即。

請參閱

參考

特殊成員函式 (C++)