rein virtuelle Methode/abstrakte Klasse



  • Moin!

    Wenn ich eine Klasse habe, die normale getter- und setter-Funktionen enthält und am ende noch eine rein virtuelle, also z.b. virtual print() const =0", heißt es ja, dass ich von der Klasse keine Objekte erzeugen kann.
    Des Weiteren, dass die pribt Methode nicht definiert werden kann, sondern erst in der abgleiteten Klasse.

    Muss jedoch die getter- und setter-Methoden implementieren??



  • Die vorhandenen getter und setter werden vererbt.
    Wenn die Attribute in der Basisklasse private sind, hast Du eh keinen direkten Zugriff auf sie.



  • sheddy schrieb:

    Muss jedoch die getter- und setter-Methoden implementieren??

    Wenn du sie aufrufen willst, ja.



  • aah okay...ich dachte, wenn eine rein virteuelle Methode in der Klasse steht, dass die Klasse dann keine Implementiereung braucht!

    verdaaaammt!



  • sheddy schrieb:

    aah okay...ich dachte, wenn eine rein virteuelle Methode in der Klasse steht, dass die Klasse dann keine Implementiereung braucht!

    verdaaaammt!

    Ganz einfach: Jede Methode die nicht rein virtuell deklariert wurde muss auch zu der entsprechenden Klasse implementiert werden.

    Nun stellt sich die Frage:
    Sollen die Getter/Setter identisch für die Abgeleiteten Klassen sein?
    ==> Ja: In der Basisklasse definieren
    ==> Nein: Sollen die Getter/Setter dennoch über die Basisklasse verwendbar sein?
    ====> Ja: virtuell in der Basisklasse definieren
    ====> Nein: Erst da deklarieren/definieren wo sie gebraucht werden

    cu André



  • sheddy schrieb:

    Moin!

    Wenn ich eine Klasse habe, die normale getter- und setter-Funktionen enthält und am ende noch eine rein virtuelle, also z.b. virtual print() const =0", heißt es ja, dass ich von der Klasse keine Objekte erzeugen kann.
    Des Weiteren, dass die pribt Methode nicht definiert werden kann, sondern erst in der abgleiteten Klasse.

    Eine virtuelle Methode kann sehrwohl bereits in der abstrakten Klasse definiert werden. Sie muss nur trotzdem nochmal von einer abgeleiteten Klasse überschrieben werden, damit diese abgeleitete Klasse dann instanzierbar ist.


Anmelden zum Antworten