臨時函數參數的生命週期
當建立臨時物件作為函數的參數時,標準保證將呼叫其析構函數在包含函數呼叫的完整表達式的末尾。
詳細說明
當函數參數是計算結果為物件的表達式時,將建立臨時物件。在提供的範例中,MyClass(42) 是一個臨時物件。
臨時物件的生命週期一直延伸到它們所屬的完整表達式的末端。完整表達式通常以分號 (`;) 結尾,分號 (`;) 結束包含該表達式的語句。在這種情況下,完整的表達式以對 myFunction() 的函數呼叫的右括號結束。
因此,在 MyClass(42) 中建立的臨時 MyClass 物件的析構函數將在執行繼續之前被呼叫。函數呼叫後的下一語句。
擴展臨時生命週期
雖然臨時物件通常是短暫的,但可以透過將它們綁定到常數引用來延長它們的生命週期。例如:
const MyClass& r = getMyClass();
在這種情況下, getMyClass() 傳回的臨時物件將持續到封閉區塊的末尾,從而將其生命週期延長到完整表達式之外。
以上是臨時函數參數能存在多久?的詳細內容。更多資訊請關注PHP中文網其他相關文章!