C で多態性オブジェクトを複製するには、その動的な性質を慎重に考慮する必要があります。未知の派生クラスに直面した場合、従来のコピー構築や演算子のオーバーロードは現実的ではなくなります。
提案される解決策には、基本クラスに仮想 Clone() メソッドを実装することが含まれます。
class Base { public: virtual Base* Clone() = 0; };
それぞれの内部派生クラスの場合、Clone() 実装は適切な型を指定します。
class Derived1 : public Base { public: Derived1* Clone() { return new Derived1(*this); } };
別の C アプローチは、コピー コンストラクターと共変戻り型:
class Base { public: virtual Base* Clone() = 0; }; class Derivedn : public Base { public: Derivedn* Clone() { return new Derivedn(*this); // Covariant return type } private: Derivedn(const Derivedn&) : ... {} };
Clone() メソッドを実装するかコピー コンストラクターを利用することにより、C では多態性オブジェクトのディープ コピーが可能になり、動的な型の不確実性とデータの整合性の両方に対応できます。
以上がC でポリモーフィック オブジェクトをディープ コピーする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。