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 gesehenstruct 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 ?
-
Das, das du meinst, ist C++11 spezifisch.
http://en.wikipedia.org/wiki/C%2B%2B11#Explicitly_defaulted_and_deleted_special_member_functions
-
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,