C でコンストラクター チェーンを活用できますか?
C# 開発者にとって馴染みのある概念であるコンストラクター チェーンにより、次の 1 つのコンストラクターを実行できます。別の。これにより、親クラスとその派生クラスでオブジェクトを初期化する効率的な方法が提供されます。
C 11 以降: コンストラクターの連鎖
C 11 以降のバージョンでは、コンストラクターチェーンは委任コンストラクターを通じてサポートされます。構文は C# とは少し異なります:
class Foo { public: Foo(char x, int y) {} Foo(int y) : Foo('a', y) {} };
このコードは 2 つのコンストラクターを定義します。1 つは (char x, int y) を受け取り、もう 1 つは (int y) を受け取ります。 2 番目のコンストラクターは、this ポインターを使用して最初のコンストラクターを呼び出し、x を 'a' に初期化します。
C 03: コンストラクター シミュレーション
残念ながら、C 03 はネイティブではサポートされていません。コンストラクターの連鎖。ただし、次の 2 つのメソッドでその効果をシミュレートできます:
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) {}
詳細なガイダンスについて C FAQ を参照すると、これらのメソッドを使用して C 03 でコンストラクター チェーンを効果的にシミュレートできます。
以上がC でコンストラクター チェーンを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。