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
Libérer: 2024-10-30 13:43:02
original
636 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal