建構函數是類的特殊成員函數,名稱與類同名。當定義該類物件時,編譯器自動呼叫以完成初始化。
void)。::)。ClassName(參數列表) {
// 初始化程式碼
}
同一類中定義多個同名建構函數,參數列表須不同。常見模式:
ClassName(int=0) 與 ClassName() 同時存在會衝突)。用一個同類物件初始化另一個物件。格式:
ClassName::ClassName(const ClassName &obj) {
// 逐成員拷貝或深拷貝
}
~ClassName(),無參數、無返回值、不可多載。delete、程式結束)自動呼叫。class Resource {
int* data;
public:
Resource(int n = 10) : data(new int[n]) { } // 建構函數取得資源
~Resource() { delete[] data; } // 解構函數釋放資源
// 拷貝建構函數、賦值運算子需依「三/五法則」實作
};
void Func() {
Resource r1(100); // 自動物件,離開作用域自動 ~Resource()
Resource* r2 = new Resource(200);
delete r2; // 手動刪除,呼叫 ~Resource()
}
建構/解構函數是 C++ 物件生命週期管理的核心。掌握重載、預設、拷貝、移動語意(C++11)及 RAII(資源取得即初始化)模式,能寫出安全、高效、無洩漏的程式碼。