Angenommen, dass ich dieses Stück Code haben:C++ abstrakte Klassenvererbung
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;
Ich habe ein paar Fragen zu diesem Thema: D
1) LandVehicle nicht Geschwindigkeit nicht implementiert(). ist das ein Fehler und wenn ja, welche Art von Fehler? oder macht es auch nur eine abstrakte Klasse?
2) ist das Schlüsselwort Override in der Klasse LandVehicle in method media() korrekt verwendet? als eine abgeleitete Klasse von einer abstrakten Klasse überschreibt es wirklich die Methode?
3) wie 2 für Override in der Geschwindigkeit() Methode von Train.
4) Trainiere jetzt eine konkrete Klasse?
5) muss das Schlüsselwort virtuell in die Deklaration der media() Methode von LandVehicle eingefügt werden?
6), wenn ich diese Methode in Train-Klasse hinzufügen:
const char* media() const{ return "Just a train";}
macht es LandVehicle Medien() verstecken oder es enthebt?
7) nach dem Hinzufügen der Methode in 6, kann LandVehicle Medien() in der Zugklasse zugegriffen werden?
Es gibt zu viele Fragen, und für die meisten von ihnen verwenden, können Sie die Antwort schnell durch Testen selbst finden können. – Aracthor
Haben Sie versucht, dies selbst zu erforschen? Was hast du gefunden und wie hat es versagt, deine Fragen zu beantworten? – Angew
Ich stimme hier zu.Schnell ist das Schreiben der Code-/Testausgabe in der Regel schneller als das Eingeben des Codes/der Frage in stackoverflow. – Hayt