基於建構函式/解構函式的C++面試題


關於建構函式的C++面試題

什麼是建構函式?

**建構函式**是與類名相同的類函式。建構函式在物件初始化時被呼叫。建構函式有三種類型:

  • 預設建構函式
  • 引數化建構函式
  • 複製建構函式

語法

class cl_name{
   cl_name(){
      //This is constructor..
   }
}

什麼是解構函式?

**解構函式**是類的一個方法,其名稱與類名相同,前面帶有**波浪號 ~** 符號。它在程式碼結束或物件被銷燬或超出作用域時被呼叫。

語法

class cl_name{
   ~ cl_name(){} //destructor
}

建構函式有什麼用?

建構函式是與類名相同的方法。建構函式的用途是在使用**new**關鍵字建立物件時初始化物件。

建立物件時,變數會被初始化為記憶體塊和基值(如果存在)。

解構函式有什麼用?

解構函式是與類名相同並在前面帶有 ~ 符號的方法。解構函式的用途是在程式碼超出物件的作用域或使用**delete關鍵字**刪除物件時釋放記憶體塊。

刪除物件時,會呼叫解構函式,它會釋放建立物件時分配的所有記憶體塊。

C++中建構函式的執行順序是什麼?

建立類的物件時會呼叫建構函式。建構函式的呼叫順序與繼承的層次結構相同。這意味著首先呼叫基類的物件,然後呼叫子類的物件,依此類推。

C++中解構函式的執行順序是什麼?

解構函式的呼叫順序與建構函式相反,並在刪除類的物件時呼叫。解構函式的呼叫順序與繼承的層次結構正好相反。這意味著首先銷燬子類的物件,然後銷燬父類的物件,依此類推。

即使我們建立了任何其他建構函式,也會建立預設建構函式嗎?

如果程式設計師沒有顯式定義任何建構函式,則編譯器會預設建立建構函式。如果程式設計師定義了建構函式,則編譯器會停止其工作,不再定義任何建構函式。

更新於:2019年9月19日

1000+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告