2010-03-25 4 views

Répondre

1

Il n'y aura aucun problème pour compiler ou exécuter ce programme.

virtual Les fonctions peuvent être remplacées, mais elles ne doivent pas l'être. Si la classe d'un objet n'implémente pas la fonction virtuelle, la superclasse sera vérifiée pour une implémentation.

0

Cela me semble bien. Quel problème pensez-vous qu'il provoque?

+1

@ Jon-Eric: Je n'ai pas fait de développement C++ depuis plusieurs années et je ne me souviens pas si nous devrions faire quelque chose comme 'B b = new B()' dans cpp? – Roman

+0

C'était étonnamment facile à manquer. Bonne prise! – spender

+0

@Roman: En général, vous utiliseriez uniquement 'new' pour créer un objet devant exister plus longtemps que la portée actuelle. Sinon, vous créez l'objet sur la pile comme cette question le fait. Cela vous évite d'avoir à détruire l'objet vous-même, car cela arrive automatiquement à la fin de la portée. Plus important encore, il vous évite de perdre la mémoire si vous oubliez de détruire l'objet, ou si vous lancez une exception entre votre 'new' et' delete'. –

0

Pourquoi aurait-il un problème? Vous appelez une fonction virtuelle définie sur la classe parente. B l'hérite.

1

Peut-être, je suppose, ils testaient si vous saviez la différence entre virtuelle et abstrait?

+0

Pouvez-vous expliquer cela plus en détail? C'est une question d'entrevue trouvée sur le Web, mais je ne connais pas la réponse. – user297850

Questions connexes