基於建構函式/解構函式的C++面試題
關於建構函式的C++面試題
什麼是建構函式?
**建構函式**是與類名相同的類函式。建構函式在物件初始化時被呼叫。建構函式有三種類型:
- 預設建構函式
- 引數化建構函式
- 複製建構函式
語法
class cl_name{ cl_name(){ //This is constructor.. } }
什麼是解構函式?
**解構函式**是類的一個方法,其名稱與類名相同,前面帶有**波浪號 ~** 符號。它在程式碼結束或物件被銷燬或超出作用域時被呼叫。
語法
class cl_name{ ~ cl_name(){} //destructor }
建構函式有什麼用?
建構函式是與類名相同的方法。建構函式的用途是在使用**new**關鍵字建立物件時初始化物件。
建立物件時,變數會被初始化為記憶體塊和基值(如果存在)。
解構函式有什麼用?
解構函式是與類名相同並在前面帶有 ~ 符號的方法。解構函式的用途是在程式碼超出物件的作用域或使用**delete關鍵字**刪除物件時釋放記憶體塊。
刪除物件時,會呼叫解構函式,它會釋放建立物件時分配的所有記憶體塊。
C++中建構函式的執行順序是什麼?
建立類的物件時會呼叫建構函式。建構函式的呼叫順序與繼承的層次結構相同。這意味著首先呼叫基類的物件,然後呼叫子類的物件,依此類推。
C++中解構函式的執行順序是什麼?
解構函式的呼叫順序與建構函式相反,並在刪除類的物件時呼叫。解構函式的呼叫順序與繼承的層次結構正好相反。這意味著首先銷燬子類的物件,然後銷燬父類的物件,依此類推。
即使我們建立了任何其他建構函式,也會建立預設建構函式嗎?
如果程式設計師沒有顯式定義任何建構函式,則編譯器會預設建立建構函式。如果程式設計師定義了建構函式,則編譯器會停止其工作,不再定義任何建構函式。
廣告