Void Erklären für meinen Ausbildungsleiter
-
Nexus schrieb:
asc schrieb:
Für mich ist void kein Datentyp, auch kein leerer Datentyp.
Darüber kann man sich jetzt streiten.
Ja kann man, ich habe nicht ohne Grund "halber" Fehler geschrieben. Als Dozent würde ich hier vermutlich keinen Punkt abziehen und dennoch eine kleine Anmerkung schreiben (mit dem Hinweis das dies eine "Grauzone" ist).
Nexus schrieb:
Was würdest du auf die Frage antworten, welchen Rückgabetyp eine
void-Funktion hat? Wahrscheinlich "keinen". Und was für einen hat dann ein Konstruktor oder Destruktor?
In beiden fällen keinen, wobei bei Funktionen/Methoden mit ausnahme des Konstruktors und Destruktors void angegeben werden muss

Ja, wie gesagt kann man darüber streiten, der Grund für meine Haltung ist aber gerade ein Anfänger gewesen (der seine Probleme mit void hatte).
Nexus schrieb:
Ich finde es, vielleicht gerade für Anfänger, besser, wenn da besser abgegrenzt wird. "Leerer Datentyp" ist zwar auch nicht ganz das Wahre, aber einfach rein gar nichts ist
voidja doch nicht. Oder was sind dann die Rückgabetypen von Ctors/Dtors, wennvoidbereits nichts ist?
Das sehe ich eher als Sonderstellung an. Ebenso wie die Sonderregel das int main implizit ein return 0 macht.
cu André
-
Bashar schrieb:
Du betonst wahrscheinlich Datentyp, denn ein Typ ist void auf jeden Fall. Da im C++-Standard nirgends von Datentypen die Rede ist, sondern nur von object types, function types und incomplete types (void ist ein solcher), kann man darüber auch nicht so richtig streiten.
Okay, mit den 3 Unterscheidungen ist es tatsächlich abgrenzbar sein, wobei ich mir Vorstellen kann das "incomplete Type" als Begriff auch einige Fragen aufwirft.
Bashar schrieb:
Vorschlag: "unbestimmten" Typs.
Das ist ein guter Vorschlag

cu André
-
Badestrand schrieb:
Amazonasmann schrieb:
Polymorphie steht in direktem Zusammenhang mit der Vererbung
Nö
Es gibt statische und dynamische Polymorphie, du meinst hier dynamische Polymorphie. Statische Polymorphie sieht so aus, deine Aussage "ermöglicht es, verwandte Objekte gemeinsam zu verarbeiten, ohne vorher die Klassenzugehörigkeit ermitteln zu müssen." passt dazu aber auch:template<typename T> void foo( const T& t ) { int i = t.getVal(); // Hier muss der Typ T ein bestimmtes Interface aufweisen ... }edit: Überladung gilt glaubich auch als statische Polymorphie.
Wenn dieses statische Zeugs Polymorphie ist, dann ist jede Mehrdeutigkeit Polymorphie. Dann ist die Bezeichnung irgendwie sinnlos.
-
700 Mrd. $ Packet schrieb:
Badestrand schrieb:
Amazonasmann schrieb:
Polymorphie steht in direktem Zusammenhang mit der Vererbung
Nö
Es gibt statische und dynamische Polymorphie, du meinst hier dynamische Polymorphie. Statische Polymorphie sieht so aus, deine Aussage "ermöglicht es, verwandte Objekte gemeinsam zu verarbeiten, ohne vorher die Klassenzugehörigkeit ermitteln zu müssen." passt dazu aber auch:template<typename T> void foo( const T& t ) { int i = t.getVal(); // Hier muss der Typ T ein bestimmtes Interface aufweisen ... }edit: Überladung gilt glaubich auch als statische Polymorphie.
Wenn dieses statische Zeugs Polymorphie ist, dann ist jede Mehrdeutigkeit Polymorphie. Dann ist die Bezeichnung irgendwie sinnlos.
Uiii, das erinnert mich an einen ellenlangen Thread wos genau darum ging:
Polimorphie - dynamisch, statisch, Überladung, Templates ???
Simon
-
[quote="asc"]
Amazonasmann schrieb:
Ich würde das als halben Fehler ansehen. Für mich ist void kein Datentyp, auch kein leerer Datentyp.
Das liegt aber auch daran, dass du eine absolut beschissene und zudem auch noch vollkommen falsche Vorstellung davon hast, was ein Datentyp ist.
-
Bashar schrieb:
Vielleicht besser: Zur Kennzeichnung von Zeigern unbekannten Typs.
Vorschlag: "unbestimmten" Typs.
Besser: "unvollständig".
Unbestimmt wäre indeterminate, was sich für gewöhnlich auf Objektzustände bezieht.
-
Void is a type specifying a typeless type.
-
camper schrieb:
Besser: "unvollständig".
Unbestimmt wäre indeterminate, was sich für gewöhnlich auf Objektzustände bezieht.incomplete gibts aber schon
-
C99 schrieb:
The void type comprises an empty set of values; it is an incomplete type that cannot be completed.
-
700 Mrd. $ Packet schrieb:
Wenn dieses statische Zeugs Polymorphie ist, dann ist jede Mehrdeutigkeit Polymorphie. Dann ist die Bezeichnung irgendwie sinnlos.
Was kennst du denn noch an Mehrdeutigkeiten? Ich verstehe Polymorphie jedenfalls so, dass je nach Typ mit dem gleichen Code Unterschiedliches passiert. Und genau das ist ja sowohl bei klassischer/dynamischer Polymorphie als auch bei template- und Überladungs-Polymorphie der Fall.
edit: Natürlich nicht Überladung mit verschiedener Parameter-Anzahl, sondern unterschiedlichen Typen in der Signatur.
-
ertappt! das gibts ja wohl nicht! du sollst die aufgabe selber erledigen und nicht irgendwem übertragen! sofort gefeuert.
-
Badestrand schrieb:
Was kennst du denn noch an Mehrdeutigkeiten? Ich verstehe Polymorphie jedenfalls so, dass je nach Typ mit dem gleichen Code Unterschiedliches passiert. Und genau das ist ja sowohl bei klassischer/dynamischer Polymorphie als auch bei template- und Überladungs-Polymorphie der Fall.
edit: Natürlich nicht Überladung mit verschiedener Parameter-Anzahl, sondern unterschiedlichen Typen in der Signatur.Polymorphie überladener Operatoren
"text"+"text2"
1+4
Was + bedeutet ist nicht eingeutig ohne den typ. + ist Vielgestaltigkeit
4.0
bar.foo()
Ebenfalls Polymorphie? Was . bedeutet ist auch nicht eindeutig. . ist doch auch Vielgestaltigkeit, oder?
-
Der Begriff "Polymorphie" ist einfach nicht eindeutig. Deshalb muss man sich vor endgültigen Aussagen hüten. Es kommt immer darauf an, wie Lehrer, Autoren, usw. den Begriff einführen und verwenden. Häufig spricht man bei Überladung überhaupt nicht von Polymorphie und der Satz von Amazonasmann, dass Polymorphie in direktem Zusammenhang mit Vererbung steht kann durchaus völlig richtig sein.
-
Kritiker schrieb:
Der Begriff "Polymorphie" ist einfach nicht eindeutig. Deshalb muss man sich vor endgültigen Aussagen hüten. Es kommt immer darauf an, wie Lehrer, Autoren, usw. den Begriff einführen und verwenden...
Das stimmt leider nur zu sehr. Siehe hierzu auch Diskussionen um andere Begriffe (Sei es nun Methode/Funktion, Datentypen, Deklaration...). Auch der Sprachgebrauch in unternehmen kann grundlegend Anders sein.
Das Problem ist nur, ist den Orginalposter die Wortdefinition seines Ausbildungsleiters wirklich klar?
cu André