Supposons que j'ai ce morceau de code:C++ abstrait héritage de classe
class Vehicle {
virtual const char* media() const = 0;
virtual unsigned speed() const = 0;
} V, *PV;
class LandVehicle : public Vehicle {
const char* media() const override{ return "Land";}
} L, *PL;
class Train : public LandVehicle{
virtual unsigned speed() const override {return 130;}
} T, *PT;
J'ai quelques questions à ce sujet: D
1) LandVehicle ne met pas en œuvre la vitesse(). est-ce une erreur et si oui, quel genre d'erreur? ou est-ce que ça en fait aussi une classe abstraite?
2) est le mot-clé override dans LandVehicle dans method media() correctement utilisé? en tant que classe dérivée d'une classe abstraite est-elle vraiment en train de surcharger la méthode?
3) Identique à 2 pour outrepasser dans la méthode speed() de Train.
4) est former une classe concrète maintenant?
5) est-il nécessaire d'ajouter le mot-clé virtuel dans la déclaration de la méthode media() de LandVehicle?
6) si j'ajoute cette méthode dans la classe de train:
const char* media() const{ return "Just a train";}
t-il cacher les médias LandVehicle() ou faut-il la remplacer? 7) Après l'ajout de la méthode en 6, peut-on accéder au support de LandVehicle() dans la classe Train?
Il y a trop de questions, et pour la plupart d'entre eux vous pouvez trouver la réponse rapidement par vous-même tester. – Aracthor
Avez-vous essayé de rechercher ceci vous-même? Qu'avez-vous trouvé et comment a-t-il échoué à répondre à vos questions? – Angew
Je suis d'accord ici.Il suffit généralement d'écrire la sortie de code/test généralement plus rapidement que de taper le code/la question sur stackoverflow. – Hayt