Vorteil von Basisklassen vs Vererbung und Referenzen vs Zeiger
-
Hi!
Ja genau das, da ich noch nicht so lange C++ mache (komme ehr von der C Seite) ist mir das net so ganz klar..
-
Wenn ich "normal" Vererbe, also ohne (abstrakte) Basisklasse, was hat das für Nachteile bzw was kann ich damit nicht realisieren?!
-
Was haben Referenzen gegenüber Pointern für Vorteile?
danke!!
ch
-
-
Zu 2) benutz doch bitte die forensuche, das hatten wir schon xmal
Müsste auch in der FAQ stehen...
-
chrh6 schrieb:
- Wenn ich "normal" Vererbe, also ohne (abstrakte) Basisklasse, was hat das für Nachteile bzw was kann ich damit nicht realisieren?!
Es hat keine Nachteile, aber manchmal ist es einfach nicht sinnvoll, eine konkrete Basisklasse zu haben. Beispielsweise wenn VW Golf von Auto abgeleitet ist: den Golf kann ich kaufen und damit rumfahren, aber wo gibt es "Auto"? Das ist nur eine abstrakte Kategorie und kein konkretes Modell.
- Was haben Referenzen gegenüber Pointern für Vorteile?
Es ist syntaktisch einfacher, damit umzugehen.
-
Bashar schrieb:
- Was haben Referenzen gegenüber Pointern für Vorteile?
Es ist syntaktisch einfacher, damit umzugehen.
Nicht eher, das Referencen nicht Null sein können?
-
Von wegen keine Null-Referenzen. Nicht alles was dir C++ garantiert stimmt.
-
Artchi schrieb:
Nicht eher, das Referencen nicht Null sein können?
Wo hilft dir das?
-
Bashar schrieb:
Artchi schrieb:
Nicht eher, das Referencen nicht Null sein können?
Wo hilft dir das?
int foo(Bar& var) { return var.whatever() % 42; } // vs int foo(Bar* var) { if (var == 0) { return -1; // return some arbitrary error value? - or rather throw someException(); // or simply crashTheProgram(); // ?? } return var->whatever() % 42; }
-
OK, dann ruf ich deine Funktionen mal auf:
Bar *b = 0; foo(*b); foo(b);
Freilich ist es illegal, Nullreferenzen zu erzeugen. Aber das merkt der Compiler nicht, es hilft dir also herzlich wenig.