Unterschied zwischen Klasse *objekt und Klasse* objekt?
-
Hi Leute,
gibt es einen Unterschied wie in der Überschrift beschrieben, zwischen den genannten Definitionen?
Gruß
Scarabol
-
Wenn es nur um ein Objekt geht, dann nicht. Aber wenn du mehrere Objekte erstellst, dann kann es einen Unterschied machen:
// Kein Unterschied: int* p1; int *p2; // Achtung bei sowas: int* a, b, c; // Typen sind: int*, int, int int *d, *e, *f; // Typen sind: int*, int*, int*Grüssli
-
ok, cool danke...
Gruß
Scarabol
-
Dravere schrieb:
Aber wenn du mehrere Objekte erstellst, dann kann es einen Unterschied machen:
int* a, b, c; // Typen sind: int*, int, int int *d, *e, *f; // Typen sind: int*, int*, int*Augenblick mal! Mit diesem Codebeispiel demonstrierst du doch nur, dass es eben keinen Unterschied macht, wo der Stern steht. Er bezieht sich immer auf die Variable, völlig egal, ob er schreibtechnisch an den Typ oder an die Variable geklatscht wird. Wieso sagst du also, dass es bei mehreren Objekten einen Unterschied machen kann, wo doch dein (durchaus richtiges) Codebeispiel das genaue Gegenteil demonstriert?
-
Technisch ist es kein Unterschied, der Stern gehört syntaktisch immer zur Variable, Whitespace wird ignoriert. Aber psychisch macht es einen Unterschied, deshalb ist es vielleicht sinnvoll, es so zu schreiben, dass man den syntaktischen Zusammenhang erkennt. Vielleicht aber auch nicht, die Diskussion haben wir ja nicht erst einmal gehabt.
Das letzte mal ist auch noch gar nicht so lange her...
-
»« schrieb:
Dravere schrieb:
Aber wenn du mehrere Objekte erstellst, dann kann es einen Unterschied machen:
int* a, b, c; // Typen sind: int*, int, int int *d, *e, *f; // Typen sind: int*, int*, int*Augenblick mal! Mit diesem Codebeispiel demonstrierst du doch nur, dass es eben keinen Unterschied macht, wo der Stern steht. Er bezieht sich immer auf die Variable, völlig egal, ob er schreibtechnisch an den Typ oder an die Variable geklatscht wird. Wieso sagst du also, dass es bei mehreren Objekten einen Unterschied machen kann, wo doch dein (durchaus richtiges) Codebeispiel das genaue Gegenteil demonstriert?
Er hat das was er meint bloss schlecht formuliert.
Denn er meint vermutlich genau das was du schreibst: es macht keinen Unterschied wo der Stern steht, aber es ist wichtig zu wissen, dass er syntaktisch zur Variable gehört, und nicht zum "Basistyp".
Wenn man immer "int* a" schreibt, sieht es so aus als ob der * zu int gehören würde (was nicht stimmt). Man ist dann versucht "int* a, b" zu schreiben, und zu erwarten dass b auch ein Zeiger wäre (was nicht stimmt). Von daher ist die Schreibweise "int*" irreführend, wenn man mehrere Variablen in einer Zeile deklariert.
Wenn man also vor hat, mehrere Variablen in einer Zeile zu deklarieren, dann "sollte" man besser "int *a" schreiben, weil es dann klar ist wo der * "wirksam" ist. Es macht also einen Unterschied. Zwar nicht was die Syntax/den Compiler angeht, aber was die Lesbarkeit/Verständlichkeit angeht.