001
13.10.2007, 21:06 Uhr
FloSoft
Medialer Over-Flow (Administrator)
|
Hi, in dem Fall von Basistypen (also int, float, char, usw) ist eigentlich imho kein Unterschied in 2 Varianten.
Wenn du jedoch komplexe Typen (z.b Klassen, o.ä) hast, musst du teilweise sogar erste Variante verwenden, mal davon abgesehen das bei erster Variante der entsprechende Konstruktor des Typs aufgerufen wird, beim 2ten der =operator.
ein Beispiel wo er dir mit 2ter methode nich mal kompiliert
C++: |
class A { public: A(int a); };
class B { public: B(A &a) : _a(a) { } // kompiliert, geht auch direkt (impliziter _A(A&)-Kopiekonstruktor)
private: A _a; }
|
Für
C++: |
class B { public: B(A &a) { _a = a; } private: A _a; }
|
kompiliert er nicht, da er keinen Standardkonstruktor von A zur Verfügung hat, sondern nur den mit Parameter, d.h da müsste man zumindest:
C++: |
class B { public: B(A &a) : _a(0) { _a = a; } private: A _a; }
|
schreiben, um den A(int)-Konstruktor aufzurufen -- class God : public ChuckNorris { }; |