Qt程序報error: undefined reference to `MainWindow::~MainWindow()'

編譯Qt程序時,編譯器報error: undefined reference to `MainWindow::~MainWindow()'。這是因爲Qt語法較嚴格,不會自動生成類的析構函數,需要程序員自己編寫,即便裏面什麼內容也沒有。所以,手寫好MainWindow::~MainWindow()後,再編譯問題就消失了。

 

析構函數(Destructor)也是一種特殊的成員函數,沒有返回值,不需要程序員顯式調用(程序員也沒法顯式調用),而是在銷燬對象時自動執行。構造函數的名字和類名相同,而析構函數的名字是在類名前面加一個~符號。函數名是標識符的一種,原則上標識符的命名中不允許出現~符號,在析構函數的名字中出現的~可以認爲是一種特殊情況,目的是爲了和構造函數的名字加以對比和區分。

注意:析構函數沒有參數,不能被重載,因此一個類只能有一個析構函數。如果用戶沒有定義,編譯器會自動生成一個默認的析構函數。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章