身為 C# 開發人員,您可能熟悉從建構函式內呼叫其他建構子的功能。在 C# 中,這稱為建構子連結。 C 中是否有類似的功能?
在 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 不直接支援建構子鏈。但是,有兩個模擬此行為的主要選項:
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中文網其他相關文章!