在 C# 中,以特定順序呼叫建構子的能力是一種常見的做法。作為一名尋求在 C 中複製此功能的 C# 開發人員,問題出現了:可以透過建構函式鏈來實現嗎?
慶幸! C 11 引進了一個稱為委託建構函式的功能,它模仿 C# 中的建構子連結。其寫法如下:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
儘管C 03 中沒有直接構造函數鏈接,但存在兩種解決方法:
預設參數: 使用預設值組合建構子參數。
class Foo { public: Foo(char x, int y=0); // Combines two constructors (char) and (char, int) };
初始化方法:利用共享初始化方法。
class Foo { public: Foo(char x); Foo(char x, int y); private: void init(char x, int y); }; Foo::Foo(char x) : init(x, int(x) + 7) {} Foo::Foo(char x, int y) : init(x, y) {} void Foo::init(char x, int y) {}
總之,C 11 實作了真正的建構函式鏈,而 C 03 提供了解決方法像預設參數和 init 方法一樣來實現類似的功能。
以上是C 建構函式可以連結嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!