Introduction au remplacement en C ++

La substitution en C ++ est l'un des moyens de réaliser le polymorphisme d'exécution, dans lequel nous modifions le comportement de la même méthode. En général, la classe enfant hérite des fonctions membres et des membres de données de la classe de base. Mais lorsque notre besoin est de remplacer la fonctionnalité dans la classe enfant, nous devons utiliser la fonction prioritaire. Le remplacement fournit un privilège aux méthodes pour avoir le même nom dans la classe de base et sa classe dérivée. Il nous permet de changer le comportement de fonction présent dans la classe de base, dans ses classes dérivées selon nos besoins.

Comment le remplacement fonctionne en C ++?

Avant de comprendre le dépassement, comprenons d'abord le polymorphisme. La signification littérale du polymorphisme est de nombreuses formes, c'est-à-dire ayant plusieurs formes d'une chose particulière. Dans un langage de programmation orienté objet, c'est l'une des fonctionnalités utiles. Dans l'héritage, le polymorphisme est atteint, par substitution de fonction ou de méthode, lorsque les classes de base et dérivées ont la même déclaration de fonction membre mais que leur définition sera différente.

Pour ce faire, nous devons d'abord hériter d'une classe dans la classe dérivée. Ensuite, nous devons fournir différentes définitions selon le besoin, pour l'une des méthodes de la classe de base à nouveau à l'intérieur de la classe dérivée. Ce n'est qu'alors que cette fonction est réputée être remplacée, et ce processus étape par étape est appelé la fonction prioritaire.

Imaginons un scénario dans lequel notre application a l'obligation de modifier le comportement de la méthode de classe de base dans une classe dérivée, nous devrions alors utiliser la fonction de substitution . Afin de remplacer une fonction dans la classe dérivée, nous devons avoir la même signature dans la classe enfant et les noms de fonction doivent être identiques dans les bases et les classes dérivées. Ici, la signature signifie l'utilisation du même type de données et de la même séquence de paramètres à transmettre dans la fonction. S'il n'y a pas besoin de paramètres, alors nous n'avons pas besoin d'utiliser de paramètre dans la fonction de base ainsi que la fonction enfant. Ci-dessous, nous avons quelques points à garder à l'esprit avant d'utiliser la priorité.

  • En programmation C ++, la substitution sera un exemple de polymorphisme d'exécution ou de polymorphisme dynamique.
  • La substitution n'est possible que dans les méthodes présentes dans les classes dérivées car une méthode est remplacée dans la classe dérivée de la classe de base.
  • Afin de réaliser la substitution, les fonctions présentes dans les classes de base et dérivées doivent avoir le même nom, le même type de retour et les mêmes paramètres.

La méthode qui est remplacée par la déclaration de substitution est appelée la méthode de base substituée. La classe de base contiendra cette méthode. Une nouvelle implémentation appelée, la méthode override est héritée de cette classe de base. Lorsque nous créons un objet de la classe dérivée et appelons la fonction membre qui existe dans les classes de base et dérivées, la fonction membre de la classe de base sera ignorée et la fonction membre de la classe dérivée sera invoquée.

Vous trouverez ci-dessous les exigences pour la substitution de méthode:

  • La première chose et la plus importante est que l'héritage doit être présent de la classe de base à la classe dérivée, car le remplacement de fonction ne peut pas être effectué au sein de la même classe. Pour y parvenir, nous avons besoin d'une classe de base et d'une classe dérivée.
  • La fonction redéfinie doit avoir exactement la même déclaration dans les classes de base et dérivées. Qu'est-ce que ça veut dire? Cela signifie que les fonctions doivent avoir le même nom, la même signature et la même liste de paramètres.

Exemple de remplacement

Code

class Animal
(
public:
void Message ( )
(
cout << "Hello there!! I am Animal";
)
);
class Dog: public Animal
(
public:
void Message ( )
(
cout << "I am Dog!!";
)
)

Dans l'exemple ci-dessus, la fonction Message () est remplacée dans la classe dérivée.

Exemple avec étapes

1. Jetons un coup d'œil à l'exemple utilisant la fonction main () afin de mieux comprendre le dépassement.

2. Créez une classe de base avec n'importe quel nom. Ici, j'utilise Animal. Écrivez une méthode pour afficher un message à afficher. Ce sera notre méthode redéfinie que nous remplacerons dans la classe héritée. Dans la méthode, écrivez un message à imprimer.

class Animal
(
public void Message( )
(
cout << "Hello there!! I am Animal";
)
)

3. Créez maintenant un chien de classe supplémentaire. Cette fois, nous l'hériterons de la classe de base que nous avons créée plus tôt, c'est-à-dire Animal. Pour hériter, nous utilisons le symbole «:».

class Dog: public Animal

4. Ici, nous déclarons la même fonction Message () pour une implémentation différente et écrivons un message. Assurez-vous que le nom et la signature de la méthode dans la classe dérivée correspondent au nom et à la signature de la méthode dans la classe de base.

public void Message ( )
(
cout << "Hey!! I am Dog";
)

5. Nous avons besoin d'une classe de plus pour exécuter la fonctionnalité de vérification de la priorité. Créez une classe avec n'importe quel nom. À l'intérieur, écrivez la fonction Main.

class ExecutionClass
(
int Main( )
(
)
)

6. Créez un objet de la classe parent et déclenchez la fonction à l'aide de l'objet de la classe. Cela invoquera la méthode Message présente dans la classe Animal.

Animal animalObject;
animalObject.Message( );

7. Créez maintenant l'objet de la classe dérivée et appelez la méthode Message. Cela invoquera la méthode Message de la classe Dog.

Dog dogObject;
dogObject.Message( );

8. Quelle sera la sortie de ce code? Peux-tu le deviner? C'est comme indiqué ci-dessous.

Production:

9. Dans l'exemple ci-dessus, nous appelons la fonction avec le même nom et la même signature, en utilisant un objet créé séparément pour la classe dérivée et la classe de base. Dans les deux cas, différentes versions de la fonction seront appelées pour la classe de base et dérivée.

Conclusion

Dans cet article, nous avons compris le remplacement de méthode en C ++, la nécessité du remplacement de méthode, des exemples concrets du principe de remplacement, la manière de le réaliser et l'exemple de remplacement à l'aide du code. Nous pouvons conclure que la substitution est l'une des fonctionnalités utiles du polymorphisme en C ++ dans laquelle nous pouvons changer le comportement de la méthode de classe de base dans la classe dérivée.

Articles recommandés

Ceci est un guide de remplacement en C ++. Nous discutons ici du fonctionnement de la substitution en C ++, un exemple simple avec différentes étapes. Vous pouvez également consulter nos autres articles connexes pour en savoir plus-

  1. Tableaux en C ++
  2. Introduction au C ++
  3. Commandes C ++
  4. Copier le constructeur en C ++
  5. Guide de remplacement dans les POO
  6. Surcharge en Java