了解臨時函數參數的生命週期
使用實例化為函數參數的臨時物件時,如下所示:
class MyClass { MyClass(int a); }; myFunction(MyClass(42));
了解它們的破壞行為至關重要。 C 標準提供了對其析構函數時間的深入了解。
臨時參數的析構時間
臨時物件在其所駐留的完整表達式結束時達到其終點。完整的表達式表示一個獨立的表達式,而不是嵌套在另一個表達式中。通常,這對應於指定語句完成的分號(或條件、迴圈和 switch 語句的右括號)。在給定的範例中,完整的表達式以函數呼叫結束。
延長臨時生命週期
值得注意的是,可以透過將臨時變數引用為恆定參考。此策略延長了它們的壽命以匹配引用的壽命:
MyClass getMyClass(); { const MyClass& r = getMyClass(); // full expression ends here ... } // object returned by getMyClass() is destroyed here
與使用MyClass obj = getMyClass(); 相比,使用此技術可以透過避免不必要的複製構造函數呼叫來優化效能。不過,其流行率有點低。
以上是臨時函數參數在 C 中存在多久?的詳細內容。更多資訊請關注PHP中文網其他相關文章!