是的,C++ 構造函數支持委托構造。委托構造是指一個構造函數可以調用同一個類中的另一個構造函數,從而避免代碼重復。委托構造在 C++11 中引入,使用 this
指針實現。
以下是一個簡單的示例:
#include <iostream>
class MyClass {
public:
int x, y;
// 普通構造函數
MyClass(int a, int b) : x(a), y(b) {
std::cout << "普通構造函數被調用" << std::endl;
}
// 委托構造
MyClass() : MyClass(0, 0) {
std::cout << "默認構造函數被調用" << std::endl;
}
// 委托構造
MyClass(int a) : MyClass(a, 0) {
std::cout << "帶一個參數的構造函數被調用" << std::endl;
}
};
int main() {
MyClass obj1; // 調用默認構造函數
MyClass obj2(3); // 調用帶一個參數的構造函數
MyClass obj3(4, 5); // 調用普通構造函數
return 0;
}
在這個示例中,我們定義了一個名為 MyClass
的類,它具有三個構造函數。其中一個構造函數是默認構造函數,它調用了另一個帶有兩個參數的構造函數。這樣,我們可以避免代碼重復,并使構造函數之間的關系更加清晰。