Accueil Finances personnelles Abstract Classes et C ++ - dummies

Abstract Classes et C ++ - dummies

Vidéo: Virtual Functions & Abstract Classes in C++ | C++ Programming Tutorials 2025

Vidéo: Virtual Functions & Abstract Classes in C++ | C++ Programming Tutorials 2025
Anonim

C ++ prend en charge late binding , qui résout un appel de méthode basé sur l'exécution type (ou type dynamique) de l'objet cible plutôt que son type déclaré (ou type statique). Cela est illustré dans l'extrait de code C ++ suivant:

#include using namespace std; class Oven {public: cuisinier vide virtuel () {cout << "cuisiner avec un four" << endl;}}; classe MicrowaveOven: four public {public: cuisinier vide virtuel () {cout << "cuisinant avec un four à micro-ondes" << endl;}}; void prepareMeal (four et four) {four. cook ();

Dans la fonction prepareMeal (), l'appel au four. cook () peut passer à Oven:: cook () ou MicrowaveOven:: cook () en fonction du type d'exécution (le type "actuel") de l'objet du four passé.

Le mot clé virtuel est critique ici. Sans elle, la méthode cook () serait liée tôt, en fonction du type de compilation, et invoquerait Oven:: cook () à chaque fois. Une fois déclarée virtuelle dans la classe Oven, la méthode est supposée être virtuelle dans chaque sous-classe, mais cela ne fait pas de mal de répéter la déclaration pour que les lecteurs comprennent.

Le programme simple suivant démontre ce principe dans la pratique:

int main () {Four du four; prepareMeal (four); MicrowaveOven mo; prepareMeal (mo); return 0;}

Dans ce programme, l'appel à cook () génère deux sorties différentes selon le type de four:

Cuisiner avec un four Cuisiner avec un four micro-ondes

Ce n'est pas toujours le cas, qu'une méthode de la classe de base peut être définie. Considérez le cas du four plus attentivement. Il existe différents types de fours - fours conventionnels, fours à convection et fours à micro-ondes - mais on pourrait soutenir qu'il n'y a pas de four qui n'appartienne pas à l'une de ces sous-classes. Vous pourriez être en mesure de dire comment les différents types de fours effectuent l'opération de cuisson - c'est-à-dire, ce que peut faire un conventionnelOven:: cook () et un micro-microwaveOven:: cook (). Il n'est probablement pas possible de définir les actions que Oven:: cook () doit effectuer.

Vous ne pouvez pas simplement quitter Oven:: cook () non déclaré dans un langage fortement typé comme C ++. Cependant, vous pouvez déclarer une méthode mais laissez unimplemented si aucune implémentation n'existe. On utilise la curieuse syntaxe suivante pour le faire:

class Oven {public: virtual void cook () = 0;};

Ce code déclare une méthode Oven:: cook () qui est lié en retard mais n'implémente pas la méthode. En fait, il va plus loin en disant que la méthode ne sera pas mise en œuvre. En C ++, une telle méthode est dite virtuelle pure . Les programmeurs C ++ utilisent également le terme préféré dans de nombreux autres langages informatiques fortement typés: abstract .La classe Oven est dite abstraite.

Un résumé représente une propriété que vous connaissez, mais que vous ne savez pas comment implémenter sans ambiguïté dans la classe en cours.

Une classe est abstraite si elle contient une ou plusieurs méthodes virtuelles pures. La signification de ceci est que vous ne pouvez pas instancier une classe abstraite. Ainsi, ce qui suit n'est plus autorisé:

int main () {Four du four; prepareMeal (four); return 0;}

La raison en est très simple: si vous avez créé un objet de classe Oven et que vous avez essayé d'invoquer oven. cook (), que devrait faire le compilateur?

À un niveau plus philosophique, il est bon de dire qu'il existe un terme commun appelé Four qui décrit les fours conventionnels, les fours à micro-ondes et les fours à convection. Ce terme est un concept habituel car il lie les similitudes dans toutes ces sous-classes. Mais il n'y a pas d'exemple de four qui ne soit pas l'une des sous-classes de Four.

Une sous-classe d'une classe abstraite est elle-même abstraite jusqu'à ce que toutes les méthodes virtuelles pures aient été remplacées par des versions non abstraites (c'est-à-dire concrètes ). Ainsi, la classe MicrowaveOven de l'extrait de code précédent n'est pas abstraite - même si Oven était abstraite - car elle remplace cook () par sa propre version concrète.

Notez qu'il n'y a rien de mal avec la fonction prepareMeal () définie comme suit:

void prepareMeal (Four et four) {four. cook ();}

Même si l'argument est déclaré être un Four, il ne peut être invoqué qu'avec une sous-classe de Four, telle que MicrowaveOven ou ConventionalOven, pour laquelle cook () est défini.

Abstract Classes et C ++ - dummies

Le choix des éditeurs

Comment envoyer une vidéo et des photos avec Flip Video - Dummies

Comment envoyer une vidéo et des photos avec Flip Video - Dummies

Après avoir pris photos et vidéos d'événements dans votre vie avec votre caméra Flip Video, vous pouvez les envoyer par e-mail à vos amis et aux membres de votre famille. Le partage de films et d'images que vous capturez et créez en envoyant un message e-mail vous permet de toucher et de toucher quelqu'un avec vos créations, même si vous êtes à proximité ...

Comment enregistrer le son séparément pour votre film numérique - Les mannequins

Comment enregistrer le son séparément pour votre film numérique - Les mannequins

Ont parfois besoin d'un réalisateur enregistrer le son en utilisant un appareil séparé de l'appareil photo, enregistrer le son séparément, puis synchroniser le son sur la vidéo plus tard, lors de l'édition. Habituellement, la raison en est d'augmenter la qualité du son enregistré car de nombreuses caméras n'enregistrent pas le son aussi bien que ...

Comment enregistrer une vidéo avec un caméscope Flip - Les nuls

Comment enregistrer une vidéo avec un caméscope Flip - Les nuls

Enregistrant des vidéos avec votre caméra Flip est comme facile comme 1-2-3 (et 4). Avant d'enregistrer une vidéo, vérifiez les indicateurs d'état de votre Flip pour vous assurer que votre caméra est complètement chargée et qu'elle a suffisamment de temps d'enregistrement pour capturer la vidéo que vous voulez filmer. Pour vérifier le niveau de charge de la batterie de votre Flip (ou ...

Le choix des éditeurs

Mot Raccourcis des symboles 2016 - des mannequins

Mot Raccourcis des symboles 2016 - des mannequins

Dans Word 2016 vous pouvez insérer des symboles communs en utilisant ces raccourcis clavier. Utilisez ces raccourcis clavier au lieu de la commande Insérer → Symbole pour insérer des symboles typographiques communs. Symbole Raccourci Tableau de bord Alt + Ctrl + signe moins En tableau Ctrl + signe moins Copyright Alt + Ctrl + C Marque déposée Alt + Ctrl + R Marque Alt + Ctrl + T Ellipsis Alt + Ctrl + période

Mot Raccourcis des symboles 2016 - mannequins

Mot Raccourcis des symboles 2016 - mannequins

En fonction de la manière dont vous choisissez d'utiliser Word 2016, vous risquez de devoir faire face pour un symbole spécial. Avec ces raccourcis clavier, vous pouvez insérer des symboles communs dans Word 2016. Utilisez ces raccourcis clavier au lieu de la commande Insérer → Symbole pour insérer des symboles typographiques communs. Symbole Raccourci Tableau de bord Alt + Ctrl + signe moins En tiret ...

Mot Trucs et astuces pour les tables 2013 - mannequins

Mot Trucs et astuces pour les tables 2013 - mannequins

Dans Word 2013, le texte se déverse dans un tableau sur une cellule base de la cellule. Vous pouvez taper un mot, une phrase ou même un paragraphe. Tout ce texte reste dans la cellule, bien que la cellule change de taille pour accueillir de plus grandes quantités de texte. Vous pouvez mettre en forme la cellule d'une table comme n'importe quel paragraphe de Word, en ajoutant même des marges ...

Le choix des éditeurs

Sexe For Dummies Cheat Sheet - les nuls

Sexe For Dummies Cheat Sheet - les nuls

Que vous vous considériez comme un Don Juan, une Lady Chatterly, ou un novice sexuel , tout le monde peut tirer le meilleur parti du sexe avec un peu plus de connaissances. Vous devriez savoir que les préliminaires sont quelque chose que vous devriez prendre en considération avec chaque interaction que vous et votre partenaire avez, ainsi que la façon de garder les choses ...

Mots et significations liés à la ménopause - mannequins

Mots et significations liés à la ménopause - mannequins

Bien que ce soit loin d'être une liste complète des termes que vous pourriez entendre être utilisé lorsque la ménopause est discutée, les cinq termes essentiels suivants devraient vous aider à comprendre les bases. HRT (hormonothérapie substitutive): Un traitement pour compléter les hormones que vous perdez pendant la ménopause - généralement une combinaison d'œstrogènes, ...

Symptômes qui indiquent que la ménopause est proche - mannequins

Symptômes qui indiquent que la ménopause est proche - mannequins

La plupart des femmes commencent à éprouver des symptômes de ménopause déséquilibrés, alors qu'ils ont encore des règles. Si vous ressentez un ou plusieurs des symptômes suivants, consultez votre médecin - vous pouvez être en train d'aborder le changement. Peau sèche ou cheveux Pensée floue (difficulté à se concentrer) Flutters du cœur (battements de cœur rapides) ...