Quelle est la différence entre une fonction abstraite et une fonction virtuelle? Dans quels cas est-il recommandé d'utiliser virtuel ou abstrait? Laquelle est la meilleure
Dans la programmation orientée objet, une fonction virtuelle ou une méthode virtuelle est une fonction ou une méthode dont le comportement peut être remplacé dans une classe héritière par une fonction avec la même signature. Ce concept est une partie très importante de la partie polymorphisme de la programmation orientée objet (POO).
Quelle est la différence entre une fonction abstraite et une fonction virtuelle? Dans quels cas est-il recommandé d'utiliser virtuel ou abstrait? Laquelle est la meilleure
J'apprends le C ++ et je me lance dans les fonctions virtuelles. D'après ce que j'ai lu (dans le livre et en ligne), les fonctions virtuelles sont des fonctions de la classe de base que vous pouvez remplacer dans les classes dérivées. Mais plus tôt dans le livre, lors de l'apprentissage de...
Disons que j'ai des cours Fooet que Barj'installe comme ceci: class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; void printStuff() { // I would like to call Foo.printStuff() here... std::cout << y...
J'ai entendu dire que les modèles de fonction de membre de classe C ++ ne peuvent pas être virtuels. Est-ce vrai? S'ils peuvent être virtuels, quel est un exemple de scénario dans lequel on utiliserait une telle
Pour autant que je sache, l'introduction du overridemot - clé en C ++ 11 n'est rien de plus qu'une vérification pour s'assurer que la fonction en cours d'implémentation est l' overrideingénierie d'une virtualfonction dans la classe de base. Est-ce que c'est
Avec la définition de structure donnée ci-dessous ... struct A { virtual void hello() = 0; }; Approche n ° 1: struct B : public A { virtual void hello() { ... } }; Approche n ° 2: struct B : public A { void hello() { ... } }; Y a-t-il une différence entre ces deux façons de remplacer la fonction...
J'ai eu cette question lorsque j'ai reçu un commentaire de révision de code disant que les fonctions virtuelles ne doivent pas nécessairement être en ligne. Je pensais que les fonctions virtuelles en ligne pourraient être utiles dans les scénarios où les fonctions sont appelées directement sur des...
Est-il possible d'écrire des méthodes virtuelles en Java, comme on le ferait en C ++? Ou existe-t-il une approche Java appropriée que vous pouvez implémenter et qui produit un comportement similaire? Puis-je avoir quelques
Dans la conception de ma classe, j'utilise beaucoup de classes abstraites et de fonctions virtuelles. J'avais le sentiment que les fonctions virtuelles affectaient les performances. Est-ce vrai? Mais je pense que cette différence de performance n'est pas perceptible et il semble que je fasse une...
Nous savons tous quelles sont les fonctions virtuelles en C ++, mais comment sont-elles implémentées à un niveau profond? La vtable peut-elle être modifiée ou même directement accessible lors de l'exécution? La vtable existe-t-elle pour toutes les classes, ou uniquement celles qui ont au moins une...
Les méthodes C # des interfaces sont déclarées sans utiliser le virtualmot - clé et remplacées dans la classe dérivée sans utiliser le overridemot - clé. Y a-t-il une raison à cela? Je suppose que c'est juste une commodité de langage, et évidemment le CLR sait comment gérer cela sous les...
Avoir au moins une méthode virtuelle dans une classe C ++ (ou l'une de ses classes parentes) signifie que la classe aura une table virtuelle et que chaque instance aura un pointeur virtuel. Le coût de la mémoire est donc assez clair. Le plus important est le coût de la mémoire sur les instances...
Je remarque parfois des programmes qui plantent sur mon ordinateur avec l'erreur: "appel de fonction virtuelle pure". Comment ces programmes se compilent-ils même lorsqu'un objet ne peut pas être créé à partir d'une classe
Contrairement à Java, pourquoi C # traite-t-il les méthodes comme des fonctions non virtuelles par défaut? Est-ce plus susceptible d'être un problème de performance plutôt que d'autres résultats possibles? Je me souviens d'avoir lu un paragraphe d'Anders Hejlsberg sur plusieurs avantages de...
J'ai une classe de base avec une fonction virtuelle et je souhaite remplacer cette fonction dans une classe dérivée. Existe-t-il un moyen de faire en sorte que le compilateur vérifie si la fonction que j'ai déclarée dans la classe dérivée remplace réellement une fonction dans la classe de base? Je...
Existe-t-il une bonne raison de ne pas déclarer de destructeur virtuel pour une classe? Quand devriez-vous spécifiquement éviter d'en écrire un?
Je connais les méthodes virtuelles de PHP ou Java. Comment peuvent-ils être implémentés en Python? Ou dois-je définir une méthode vide dans une classe abstraite et la remplacer?