C# では、特定の順序でコンストラクターを呼び出す機能が一般的です。この機能を C で再現しようとしている C# 開発者として、次の疑問が生じます: コンストラクター チェーンを通じて実現できるでしょうか?
喜んでください! C 11 では、C# で見られるコンストラクターの連鎖を模倣する委任コンストラクターとして知られる機能が導入されています。記述方法は次のとおりです:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
C 03 には直接コンストラクターの連鎖がないにもかかわらず、2 つの回避策が存在します:
デフォルトのパラメータ: デフォルトを使用してコンストラクタを結合しますパラメータ。
class Foo { public: Foo(char x, int y=0); // Combines two constructors (char) and (char, int) };
初期化メソッド: 共有初期化メソッドを利用します。
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) {}
結論として、C 11 は真のコンストラクター チェーンを有効にし、C 03 は回避策を提供します。同様の機能を実現するデフォルトのパラメータや init メソッドなど。
以上がC コンストラクターはチェーンできますか?チェーンできる場合はどのようにすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。