首頁 >後端開發 >C++ >如何在 C 中實現構造函數鏈?

如何在 C 中實現構造函數鏈?

Linda Hamilton
Linda Hamilton原創
2025-01-02 17:30:39793瀏覽

How Can I Implement Constructor Chaining in C  ?

我可以利用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn