首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 回顧:構造函數與析構函數詳解

     編輯:C++ 入門

構造函數

  • 特殊成員函數,名與類同,無返回類型(連 void 也不能)。
  • 創建對象時自動調用,保證數據成員正確初始化。
  • 通常 public,也可 private(如單例模式)。
  • 可重載(參數不同)。

默認構造函數

無參數構造函數。若用戶未定義任何構造函數,編譯器生成默認構造函數(不初始化成員)。若定義了任何構造函數,編譯器不再生成默認構造函數。

析構函數

  • 名為 ~ClassName(),無參數,無返回類型,不可重載。
  • 對象生命週期結束時自動調用,釋放資源。
  • 若未定義,編譯器生成空析構函數。

對象數組與 new/delete

Test t[2] = {10, 20}; // 調用 2 次帶參構造
Test* p = new Test(5); // 分配內存 + 構造
delete p; // 析構 + 釋放內存
Test* arr = new Test[3]; // 3 次默認構造
delete[] arr; // 3 次析構 + 釋放內存

顯式調用析構函數

可顯式調用 obj.~Test(),但對象生命週期結束時系統會再調用一次,導致雙重析構。若析構中有 delete 會出錯。一般不顯式調用,STL 內部有特殊用法(如 placement new 後)。

全局對象

全局對象的構造函數在 main() 之前執行,析構在 main() 之後。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved