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. ただし、この動作をシミュレートするには 2 つの主なオプションがあります:
1.デフォルトのパラメーター:
いくつかのパラメーターにデフォルト値を指定することで、複数のコンストラクターを組み合わせることができます:
class Foo { public: Foo(char x, int y = 0); // Combines constructors Foo(char) and Foo(char, int) };
2。 Init メソッド:
共通コードをプライベート メソッドに抽出します:
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 中国語 Web サイトの他の関連記事を参照してください。