Comment utiliser les constructeurs et l'opérateur d'affectation de la classe de base en C
Un scénario courant se produit lors de l'héritage d'une classe de base et de l'intention de remplacer des fonctions tout en conservant l’ensemble de constructeurs et d’opérateurs d’affectation de la classe de base. Dans ce cas, la réécriture de ces constructions peut s'avérer inutile, car C offre des alternatives viables.
Invocation explicite de constructeurs et d'opérateurs d'affectation :
Dans cette approche, la classe dérivée appelle explicitement les constructeurs et l'opérateur d'affectation de la classe de base dans ses propres définitions de constructeurs et d'opérateurs d'affectation. Par exemple, considérons ce qui suit :
<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>
Répartition implicite de fonctions :
Dans les cas où la classe dérivée ne remplace pas explicitement l'opérateur d'affectation ou le constructeur de copie de la classe de base , le compilateur distribue automatiquement aux méthodes de classe de base appropriées. Cette fonctionnalité est démontrée ci-dessous :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!