C で基本クラスのコンストラクターと代入演算子を利用する方法
基本クラスから継承し、特定のクラスをオーバーライドする場合に一般的なシナリオが発生します。基本クラスのコンストラクターと代入演算子のセットを維持しながら関数を実行します。この場合、C には実行可能な代替手段が用意されているため、これらの構成要素を書き直す必要はありません。
コンストラクターと代入演算子の明示的呼び出し:
このアプローチでは、派生クラス独自のコンストラクターと代入演算子の定義内で、基本クラスのコンストラクターと代入演算子を明示的に呼び出します。たとえば、次のことを考慮してください。
<code class="cpp">class Base { public: Base(const Base& b) { /*...*/ } Base& operator=(const Base& b) { /*...*/ } }; class Derived : public Base { public: Derived(const Derived& d) : Base(d), // Base constructor additional_(d.additional_) // Additional member initialization { } Derived& operator=(const Derived& d) { Base::operator=(d); // Base assignment operator additional_ = d.additional_; return *this; } };</code>
暗黙的な関数ディスパッチ:
派生クラスが基本クラスの代入演算子またはコピー コンストラクターを明示的にオーバーライドしない場合を指定すると、コンパイラは適切な基本クラスのメソッドに自動的にディスパッチします。この機能を以下に示します:
<code class="cpp">class Base { int value_; }; class Derived : public Base { public: Derived& operator=(const Derived& d) { Base::operator=(d); // Implicit invocation of base operator= // Perform derived-specific assignment return *this; } }; </code>
以上が派生クラスで基本クラスのコンストラクターと代入演算子を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。