我可以利用 C 中的建構函式鏈嗎?
建構函式鍊是 C# 開發人員熟悉的概念,允許執行來自其他。這提供了一種有效的方法來初始化父類別及其衍生類別中的物件。
C 11 及更高版本:建構函式鏈
在 C 11 及更高版本中,建構函式透過委託建構函式支援連結。語法與 C# 略有不同:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
此程式碼定義了兩個建構子:一個採用 (char x, int y),另一個採用 (int y)。第二個建構函數使用 this 指標呼叫第一個建構函數,將 x 初始化為 'a'。
C 03:建構子模擬
不幸的是,C 03 本身不支援建構子連結。不過,有兩種方法可以模擬其效果:
class Foo { public: Foo(char x, int y = 0); // This combines (char) and (char, int) constructors. };
class Foo { public: Foo(char x); Foo(char x, int y); private: void init(char x, int y); }; Foo::Foo(char x) : Foo(x, int(x) + 7) {} // Calls init(x, int(x) + 7). Foo::Foo(char x, int y) : Foo(x, y) {} // Calls init(x, y). void Foo::init(char x, int y) {}
透過參考 FAQ 以獲得進一步指導,您可以使用這些方法有效地模擬C 03 中的建構函式鏈。
以上是如何在 C 中實現構造函數鏈?的詳細內容。更多資訊請關注PHP中文網其他相關文章!