Qt 析構機制

2021-09-26 22:09:04 字數 530 閱讀 4702

最近發現寫的程式,結束後會出現異常關閉,了解下qt的析構機制

c++ 誰new的誰delete是最基本的規範

qt則幫忙封裝好了析構,一直認為qt隨便new 析構自己解決,現在看來不是

qt只有qobject才會析構,其他的 比如最常見的qpixmap就不會自己析構需要手動析構

所以qt類下new了之後析構方法

繼承qobject的 不用管或者

deletelater
沒有繼承qobject的

delete
判斷是否存在的

if

(extrach_)

執行緒

if

(thread_extrach_-

>

isrunning()

)delete thread_extrach_;

thread_extrach_ = nullptr;

虛析構函式和析構函式中的虛機制

虛析構函式 虛析構函式是為了解決基類指標指向派生類物件,並用基類指標刪除派生類物件時能夠完全釋放記憶體。class a1 class a2 class b1 public a1 class b2 public a2 int main 一般來說,如果類中不包含虛函式,就表示這個類不作為基類使用。如果宣...

虛析構 純虛析構

析構函式的工作方式是 最底層的派生類 most derived class 的析構函式最先被呼叫,然後呼叫每乙個基類的析構函式。從高到低依次析構 因為在c 中,當乙個派生類物件通過使用乙個基類指標進行刪除 b a a a new b delete a 而這個基類有乙個非虛的析構函式,則結果是未定義的...

C 析構函式 虛析構函式

1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...