首頁 > 後端開發 > C++ > C 是否支援建構函式鏈,與 C# 相比如何?

C 是否支援建構函式鏈,與 C# 相比如何?

Mary-Kate Olsen
發布: 2024-12-25 14:22:18
原創
1010 人瀏覽過

Does C   Support Constructor Chaining, and How Does It Compare to C#?

C 中的建構子連結

身為 C# 開發人員,您可能熟悉從建構函式內呼叫其他建構子的功能。在 C# 中,這稱為建構子連結。 C 中是否有類似的功能?

C 11 及以後

在 C 11 及更高版本中,透過委託構造函數支援構造函數鏈。語法與 C# 略有不同:

class Foo {
public:
  Foo(char x, int y) {}
  Foo(int y) : Foo('a', y) {}
};
登入後複製

在此範例中,建構子 Foo(int y) 委託給建構子 Foo(char x, int y),其中 x 設定為 'a'。

C 03

不幸的是,C 03 不直接支援建構子鏈。但是,有兩個模擬此行為的主要選項:

1。預設參數:

您可以透過提供某些參數來組合多個建構子:

class Foo {
public:
  Foo(char x, int y = 0);  // Combines constructors Foo(char) and Foo(char, int)
};
登入後複製

2.初始化方法:

將公共程式碼提取到私有方法中:

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) {
  // Shared initialization code
}
登入後複製

雖然這些技術不提供真正的構造函數鏈,但它們允許類似的功能。

以上是C 是否支援建構函式鏈,與 C# 相比如何?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板