Polymorphisme $ touche.CC
$ Nano Polymorphisme.CC
Exemple 01: surcharge de fonction
Lorsque leurs arguments sont uniques, vous pouvez utiliser deux fonctions principales avec le même titre en C++. Diverses méthodes sont appelées basées sur la quantité et le type de paramètres, et ce concept est connu sous le nom de surcharge de fonction. Nous avons commencé notre premier exemple avec l'espace de noms «STD» standard et l'en-tête d'entrée «iOStream». Trois fonctions «Val» définies par l'utilisateur sont définies, chacune contenant une seule instruction COUT. La première fonction contient un paramètre de type entier, le second contient le paramètre à double type, et le dernier contient deux paramètres de type double. Les deux premières fonctions «Val» obtiennent simplement la valeur de la méthode principale () et l'afficher sur le shell via l'instruction COUT. Le troisième obtient deux valeurs de type double de la main () et affiche la somme des deux valeurs sur la coque à l'aide de la clause COUT. La fonction principale () est simplement d'appeler trois méthodes de même nom les unes après les autres en passant différentes valeurs.
#inclure
Utilisation de Namespace Std;
int Val (int n1)
couter <<"Integer: "<< n1 <
double val (double n1)
couter <<"Double: "<< n1 <
double val (double n1, double n2)
couter << "Sum: "<< n1+n2<
int main()
Val (10);
Val (9.25);
Val (4.1, 8.23);
retour 0;
La compilation de ce code C ++ est réussie à l'aide du compilateur G ++ sur le shell.
$ G ++ Polymorphisme.CC
Après avoir exécuté le code, nous avons les valeurs affichées sur la console ci-dessous.
$ ./un.dehors
Exemple 02: surcharge de l'opérateur
La surcharge de l'opérateur est similaire à la surcharge de méthode car elle utilise le même signe mais divers opérandes pour des méthodes d'opérateur distinctes. Nous avons donc commencé cet exemple en déclarant une nouvelle classe «A» après l'espace de noms et la bibliothèque d'en-tête. La classe A contient un membre de données privé de type entier «V», et une fonction de constructeur A () utilisée pour initialiser la variable «V» avec une valeur de 5. Voici la fonction de l'opérateur pour incrémenter la valeur de «V» par 3. Comme son nom le montre, l'opérateur «+» a été surchargé ici. La fonction show () est là pour montrer la valeur incrémentée d'une variable «V.«Lors de la création d'un objet, le constructeur a () sera exécuté. L'objet a été utilisé pour appeler la fonction d'opérateur «++». L'OBJ est à nouveau utilisé pour appeler la fonction show () pour afficher la valeur incrémentée.
#inclure
Utilisation de Namespace Std;
Classe A
privé:
à la TV;
public:
A (): v (5)
void opérateur ++ ()
v = v + 3;
void show ()
couter << "Value after increment: " << v << endl;
;
int main()
Un obj;
++obj;
obj.montrer();
retour 0;
Après la compilation, nous n'avons aucune erreur. La valeur incrémentée de la variable «V» a été affichée sur notre écran de terminal lors de l'exécution de ce code.
$ G ++ Polymorphisme.CC
$ ./un.dehors
Exemple 03: fonction de fonctionnement
La classe de base et ses sous-classes descendantes peuvent avoir les mêmes méthodes de nom. Lorsque nous utilisons une instance de la sous-classe pour invoquer la méthode, la fonction de la classe étendue est exécutée plutôt que la classe parent. En conséquence, diverses fonctions s'exécuteront en fonction de l'objet invoquant la méthode. En C ++, ceci est appelé méthode dominante. Donc, nous avons initialisé trois classes dans le code. La classe A est la classe parentale des deux classes d'enfants B et C. Toutes les classes ont la même fonction de nom, «show ()», affichant ses spécifications via une instruction COUT. La méthode Main () a créé 3 objets pour 3 classes pour appeler les fonctions respectives.
#inclure
Utilisation de Namespace Std;
Classe A
public:
void show ()
couter << "Base class A… " << endl;
;
classe B: public a
public:
void show ()
couter << "Derived class B… " << endl;
;
classe C: public a
public:
void show ()
couter << "Derived class C… " << endl;
;
int main()
Un o1;
O1.montrer();
B o2;
O2.montrer();
C O3;
O3.montrer();
retour 0;
Nous avons toutes les méthodes exécutées à partir de toutes les classes lors de l'exécution de ce fichier de code.
Exemple 04: fonctions virtuelles
Si nous utilisons une référence de classe de base «pointeur» pour faire référence à un objet de classe dérivé, nous pouvons même ne pas être capables de contourner les méthodes en C++. Dans ces circonstances, l'utilisation de méthodes virtuelles dans la classe des parents garantit que la méthode peut être remplacée. Donc, nous avons créé une classe Parent A avec sa classe Child B. Les deux classes ont les fonctions du même nom, mais la fonction de classe parent contient le mot-clé «virtuel.«Dans main (), l'objet de classe B« B »a été utilisé comme référence à l'objet de pointeur de classe parent« A »« A."
#inclure
Utilisation de Namespace Std;
Classe A
public:
virtual void show ()
couter << "Base class A… " << endl;
;
classe B: public a
public:
void show ()
couter << "Derived class B… "retour 0;
Lors de l'exécution de ce code, la méthode de classe dérivée a été exécutée à l'aide du mot-clé virtuel dans la fonction de même nom définie par l'utilisateur de la classe parent.
$ G ++ Polymorphisme.CC
$ ./un.outg
Conclusion:
Il s'agissait d'utiliser le polymorphisme en C ++ en utilisant certains de ses concepts de base. Pour le rendre fluide, nous avons couvert la surcharge des fonctions, la fonction de fonctionnement de la fonction, la surcharge de l'opérateur et le concept de fonction virtuelle. Nous espérons les meilleurs commentaires pour ce travail.