En C ++, si une fonction avec le même nom existe dans la classe de base et dérivée, la fonction de classe dérivée remplace la fonction de classe de base. Cela montre que si une fonction est appelée avec l'objet de la classe dérivée, au lieu de la fonction de classe de base, la fonction de classe dérivée sera exécutée. Ceci est connu Comme fonction de fonctionnement en C++, et il permet aux classes dérivées de modifier le comportement de la fonction de classe de base pour répondre à leurs besoins spécifiques. Primordial est important car il permet une réutilisabilité du code, ce qui facilite la modification du code et la suppression des programmeurs et de supprimer la nécessité d'écrire le code à partir de zéro.
Dans cet article, nous montrerons comment utiliser le "passer outre" En langage de programmation C ++.
Contenu pour cet article:
Comment utiliser la remplacement en c++
Utiliser 'passer outre' En C ++, nous devons simplement l'ajouter après la déclaration de fonction dans la classe dérivée. Voici un exemple:
Exemple 1: fonction de fonction C ++
Le code fourni démontre la fonction primordiale en C++.
#inclure
Utilisation de Namespace Std;
classe parent
public:
void linuxhint_print ()
couter << "This is Base Function" << endl;
;
Classe enfant: Parent public
public:
void linuxhint_print ()
couter << "This is Derived Function" << endl;
;
int main()
Child Child_derived;
Child_derived.Linuxhint_print ();
retour 0;
Nous avons une classe de parents avec une fonction nommée Linuxhint_print () qui imprime un message à la console. Nous créons ensuite une classe d'enfants qui hérite publiquement de la classe parent et remplace le Linuxhint_print () fonction avec sa propre implémentation qui imprime également un message à la console.
Dans la fonction Main (), un objet de la classe enfant est créé et nommé comme Linuxhint_print () fonction. Puisque la classe d'enfants l'emporte sur Linuxhint_print () fonction de la classe parent, la sortie sera C'est une fonction dérivée au lieu de C'est une fonction de base.
Exemple 2: C ++ Access Overridden Fonction à la classe de base
Parfois, nous pouvons vouloir appeler la fonction remplacée dans la classe de base à partir de la classe dérivée. Nous pouvons le faire en utilisant l'opérateur de résolution de portée '::'. Voici un exemple:
#inclure
Utilisation de Namespace Std;
Classe Base
public:
Virtual void test ()
couter << "This is Base Class" << endl;
;
classe dérivée: base publique
public:
VOID TEST ()
Base :: test ();
couter << "This is Derived Class" << endl;
;
int main()
Dérivé dérivéoBJ;
dérivé.test();
retour 0;
Le code ci-dessus définit deux classes Base et Dérivé, où la classe dérivée hérite de la classe de base. Les deux classes ont une fonction nommée test () qui affiche le message sur la console. La fonction test () dans la classe de base est déclarée virtuelle, indiquant qu'elle peut être remplacée par des classes dérivées.
Dans la classe dérivée, nous employons la fonction test () et appelons la fonction Test () de la classe de base en utilisant Base :: test () imprimer C'est la base Classe à la console. Nous imprimons ensuite Ceci est une classe dérivée à la console après avoir appelé la fonction Test () de la classe de base.
Si nous créons un objet de la classe dérivée et appelons sa fonction test (), la sortie sera C'est la base Classe suivie par Ceci est une classe dérivée, indiquant que la classe dérivée a remplacé la fonction de test () de la classe de base et a ajouté son propre comportement.
Exemple 3: C ++ Call Fonction remplacée de la classe dérivée
Nous pouvons également appeler la fonction remplacée dans la classe de base de l'extérieur de la hiérarchie de classe en utilisant un pointeur vers la classe de base. Voici un exemple:
Ce code démontre la fonction primordiale en C ++ en utilisant l'héritage.
#inclure
Utilisation de Namespace Std;
Classe Base
public:
VOID TEST ()
couter << "This is Base Function" << endl;
;
classe dérivée: base publique
public:
VOID TEST ()
couter << "This is Derived Function" << endl;
// appelle la fonction remplacée
Base :: test ();
;
int main()
Dérivé dérivé1;
dérivé1.test();
retour 0;
Il y a deux classes définies, bases et dérivées. Ici, dans le code ci-dessus, la classe dérivée est dérivée de la base à l'aide du spécificateur de succession public.
Les deux classes ont une fonction membre nommée test(), qui affiche un message sur la console. Cependant, dans la classe dérivée, la fonction test () est remplacée pour imprimer un message différent et également appeler la fonction test () de la classe de base à l'aide de l'opérateur de résolution de portée (: :).
La fonction principale () a un objet de classe dérivée, et sa fonction test () est appelée. Lorsque la fonction test () est appelée sur l'objet dérivé1, il imprime C'est une fonction dérivée à la console puis appelle la fonction test () de la classe de base, qui imprime C'est une fonction de base à la console.
Exemple 4: Fonction de l'appel c ++ remplacé à l'aide du pointeur
Nous pouvons également appeler la fonction remplacée dans la classe de base en utilisant un pointeur vers la classe dérivée. Voici un exemple:
#inclure
Utilisation de Namespace Std;
Classe Base
public:
VOID TEST ()
couter << "This is Base Function" << endl;
;
classe dérivée: base publique
public:
VOID TEST ()
couter << "This is Derived Function" << endl;
;
int main()
Dérivé dérivé1;
// pointeur vers dérivé1
Base * ptr = &derived1;
// Fonction de classe de base d'appel
ptr-> test ();
retour 0;
Dans le programme ci-dessus, deux classes sont définies, basées et dérivées. Les deux classes ont une fonction membre nommée test () qui affiche un message sur la console.
Dans le principal() Fonction, un objet de la classe dérivée est créé et un pointeur PTR de la base de type est créé et initialisé pour pointer vers l'objet dérivé1.
La fonction test () est appelée sur le ptr pointeur, qui est de la base de type. La fonction test () dans la classe de base peut être remplacée dans n'importe quelle classe dérivée en utilisant le pointeur.
Ici, lorsque la fonction test () est appelée sur le ptr pointeur, il imprime C'est une fonction de base à la console au lieu de C'est une fonction dérivée.
Différence entre remplacement et surcharge en C++
Le remplacement et la surcharge sont deux concepts importants dans la programmation orientée objet. En C ++, ils sont utilisés pour fournir un comportement polymorphe, ce qui permet à différents objets de répondre différemment au même message.
Surcharge Créent plusieurs fonctions avec le même nom mais ayant des paramètres ou des types d'arguments différents.
Primordial, D'un autre côté, fait référence au processus de redéfinition d'une fonction dans une classe dérivée qui contient le même nom qu'une fonction de classe de base.
Le différence clé entre la remplacement et la surcharge, c'est que le remplacement implique de redéfinir une fonction dans une classe dérivée avec le même nom et la même signature que celle de la classe de base. En revanche, la surcharge implique la création de plusieurs tâches avec le même nom, mais différents paramètres ou types d'arguments.
Conclusion
Le 'passer outre' en C ++ peut s'assurer que la fonction de la classe dérivée suit la fonction virtuelle de la classe de base. Cet article traite des différentes façons de remplacer une fonction. En C ++, la fonction peut être remplacée dans les deux sens de la base à dérive ou vice versa, nous pouvons également définir un pointeur vers une classe de base et remplacer une fonction dérivée dessus.