Maison >développement back-end >C++ >Comment utiliser les constructeurs de classes de base et les opérateurs d'affectation dans les classes dérivées ?

Comment utiliser les constructeurs de classes de base et les opérateurs d'affectation dans les classes dérivées ?

DDD
DDDoriginal
2024-10-30 13:43:02665parcourir

How to Use Base Class Constructors and Assignment Operators in Derived Classes?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn