Bonjour à vous,
Avant de oser cette question, j'ai fait mes recherches mais sans résultat précis. Je vous la pose donc...
Je fais mes premières armes en polymorphisme. J'ai bien compris que le polymorphisme passe par la redéfinition exacte d'une fonction virtuelle déclarée dans la classe de base. J'ai également compris que l'argument de cette fonction doit être un pointeur ou un référence à un objet afin que l'on ait pas plus à faire à une simple redéfinition qu'à du polymorphisme.
Par contre, je me demande si il est OBLIGATOIRE de passer l'argument comme constant pour que se mette en place le polymorphisme. Je me pose la question car tous les exemples que j'ai vu font usage de const.
Cela me pose problème car le fait de déclarer mon argument const m'empêche, pour une raison qui m'est obscure, de faire appel aux accesseurs de la classe ou est redéfinie la fonction virtuelle. Voici un bout de code...
Selon vous, est-il correct côté polymorphisme?
Merci à l'avance!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 TravailleurAutonome::TravailleurAutonome(string nom, string prenom, int tarif) : Travailleur(nom, prenom) { setTarif(tarif); } TravailleurAutonome::TravailleurAutonome(TravailleurAutonome & t):Travailleur(t) { setTarif(t.getTarif()); } // Pas de const sinon getPrenom, getNom et getTarif ne fonctionnent pas // afficherTravailleurVirtuelle est déclarée et définie dans la classe travailleur // également sans const void TravailleurAutonome::afficherTravailleurVirtuelle() { cout<<getPrenomTravailleur()<<" "; cout<<getNomTravailleur(); cout<<endl<<getTarif(); }
Partager