顯式析構函數呼叫:何時以及為何
一般來說,在C 中不建議明確析構函數。然而,也存在例外,如C 11 標準第13.4.5 節中所示:
<code class="cpp">template<class T> struct A { ~A(); }; void f(A<int>* p, A<int>* q) { p->A<int>::~A(); // OK: destructor call q->A<int>::~A<int>(); // OK: destructor call }</code>
在此範例中,顯式析構函數呼叫是允許的,因為所討論的物件是使用放置new 創建的。若要銷毀此類對象,您必須明確地呼叫它們的析構函數。
除了放置刪除之外,幾乎沒有任何合理的理由明確地呼叫析構函數。一種可能性是手動銷毀一個普通可破壞的對象,儘管這不是特別有用。
附加說明
避免明確析構函數呼叫的規則的常見例外屬於局部變數。然而,這是不準確的;你不應該在局部變數上明確調用析構函數。
以上是什麼時候可以在 C 中明確呼叫析構函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!