Virtuelle Funktionen in abstrakten Klassen



  • Hi!

    Hab grad heute was ausprobiert, und zwar eine virtuelle Methode in einer
    abstrakten Basisklasse. Was ich ausprobiert hab, hab ich nur einmal hier irgendwo gesehen 😃

    struct Basis
    {
    virtual void function () = delete; //oder default
    };
    

    Der Compiler gab mir dazu eine Warnung 🙄

    Basisklasse.hxx|24|warning: defaulted and deleted functions only available with -std=c++0x or -std=gnu++0x|
    

    Was genau macht es für einen unterschied, delete, default oder 0 zunehmen ?

    VD



  • Vielleicht guckst Du mal, was delete , default und =0 bedeuten. Dann erübrigt sich die Frage.



  • Tachyon schrieb:

    Vielleicht guckst Du mal, was delete , default und =0 bedeuten. Dann erübrigt sich die Frage.

    Es war ja nur zur "Sicherheit" ...

    Dann Danke!



  • Da Du nach dem Unterschied fragst, und der Unterschied jeweils gigantisch ist, scheinst Du noch gar nicht nachgeguckt zu haben.



  • Tachyon schrieb:

    Da Du nach dem Unterschied fragst, und der Unterschied jeweils gigantisch ist, scheinst Du noch gar nicht nachgeguckt zu haben.

    Ich dachte, es wär rethorisch gemeint. Guck gleich mal nach.

    Edit:
    Wie soll ich das jetzt verstehen ?

    - default ist eine (die immer als letzte behandelte) Marke in einer switch/case Abfrage, die 'Ausgeführt' wird wenn kein mit case definierter Ausdruck dem aktuellen entspricht, wenn also kein Verfahren definiert ist, mit dem der jetzige spezielle Zustand behandelt wird.

    - delete ist ein Operator, der einen mit new dynamisch allokierten Speicherbereich wieder zerstört, bzw. freigibt, sodass keine Memory Leaks entstehen. Er gibt nichts zurück.

    - 0 ist genau das, wonach es aussieht.

    Was aber ist jetzt die Wirkung auf die virtuellen Funktionen ?





  • Gugelmoser schrieb:

    Das, das du meinst, ist C++11 spezifisch.

    http://en.wikipedia.org/wiki/C%2B%2B11#Explicitly_defaulted_and_deleted_special_member_functions

    Ah, danke. Jetzt ist mir alles klar.

    schönen Montag noch, 🕶


Log in to reply