Abstrakte klasse und virtuelle Methoden..



  • Habe eine Abstrakte klasse, von dieser ich divere andeere klasse ableite..

    die Abstrakte klassen enthälte eine virtuelle Funktion "Hallo". Nun meine frage , was für ein sinn hat das "=0" ??

    virtual void Hallo()=0;
    


  • Das steht eigentlich in jedem C++ Buch.
    Du kannst keine Instanz der abstrakten Basisklasse bilden.
    Das = 0 zeigt an, dass es sich um eine pure virtual function handelt
    (rein virtuell). Damit wird die Klasse zur abstrakten Klasse.
    Es muss nur eine Funktion so deklariert sein, dann ist die Klasse breits
    abstrakt.



  • ahh gut;) danke



  • Dieses "=0" sagt dir und dem Compiler, daß die Methode pur virtuell ist. Die Klasse hat zwar die Schnittstelle dieser Methode festgelegt, aber keinen Quellcode dazu erzeugt.

    Für dich bedeutet das (a) daß du keine Objekte dieser Klasse anlegen kannst (der Compiler wird dich sofort darauf hinweisen, daß Hallo() akstrakt definiert ist) und (b) jede abgeleitete Klasse die Methode Hallo() überschreiben muß (außer sie soll selber abstrakt sein).

    Edit: verd, bin ich wirklich so langsam? muß an der Zeitumstellung liegen


Anmelden zum Antworten