Desktruktor, abgeleitet Klasse

Schnelle objektorientierte, kompilierende Programmiersprache.
GilbertDur
Beiträge: 105
Registriert: Fr Mär 01, 2013 10:31 am

Re: Desktruktor, abgeleitet Klasse

Beitrag von GilbertDur » Di Jun 11, 2013 7:14 pm

Xin hat geschrieben:
GilbertDur hat geschrieben:
naums hat geschrieben:In C# gibts ein override, was andersrum funktioniert.
Wieso andersrum?
Weil override nicht an der Funktion geschrieben wird, die überschrieben werden soll, sondern die überschrieben wird.

@naums: In C++11 gibt's override auch.
Ach so war das gemeint. Hatte mich beim Drüberlesen gewundert

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: Desktruktor, abgeleitet Klasse

Beitrag von naums » Mi Jun 12, 2013 3:01 pm

Weil override nicht an der Funktion geschrieben wird, die überschrieben werden soll, sondern die überschrieben wird.
Danke, für den disqualifizierenden Satz. Also wird "override" nach dieser Definition an NULL rangehangen? :P

Override sagt, dass die Methode, die ich gerade am schreiben bin, eine eventuell vorhandene überschreibt. virtual sagt anscheinend, dass die Methode, die ich grade am schreiben bin, durch eine andere - in einer abgeleiteten Klasse - überschrieben werden kann.

MfG
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Desktruktor, abgeleitet Klasse

Beitrag von Xin » Mi Jun 12, 2013 3:11 pm

naums hat geschrieben:
Weil override nicht an der Funktion geschrieben wird, die überschrieben werden soll, sondern die überschrieben wird.
Danke, für den disqualifizierenden Satz. Also wird "override" nach dieser Definition an NULL rangehangen? :P
Für Dich noch mal ausführlich:
Override schreibt man nicht an die Funktiondeklaration, die später überschrieben werden soll (also z.B. eine pure virtual Funktion, die mit = 0 gekennzeichnet wird), sondern an die Funktiondeklaration, die die Überschreibung durchführt.
naums hat geschrieben:Override sagt, dass die Methode, die ich gerade am schreiben bin, eine eventuell vorhandene überschreibt.
Nein. Der Funktionspointer ist definitiv vorhanden, denn der Zweck von override ist zu meckern, wenn die Funktion eventuell nicht vorhanden wäre. Ohne Override würdest Du einfach eine neue definieren, override verlangt, dass Du einen vorhandenen Funktionspointer überschreibst. Dieser Funktionspointer darf pure virtual sein (also NULL), aber er muss bereits in der vtable vorhanden sein.
naums hat geschrieben:virtual sagt anscheinend, dass die Methode, die ich grade am schreiben bin, durch eine andere - in einer abgeleiteten Klasse - überschrieben werden kann.
Nicht anscheinend, sondern tatsächlich.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten