konstruktor
-
HALLO.
ich würde gerne wissen, was der unterschied zwischen folgenden 2 konstruktoren ist (vor allem aber, wo die vorteile bei beiden versionen liegen). ich muss auch ehrlich sagen, dass ich die erste version selber nicht verstehe.
1.) class point { public: point(int nx,int ny) : x(nx),y(ny) {} //hier Ctor #1 int getx() {return x;} int gety() {return y;} private: int x,y; }; 2.) class cPoint { public: cPoint :: cPoint () //hier Ctor #2 {itsX=0;itsY=0;} cPoint :: ~cPoint () {} int GetX () const {return x;} int GetY () const {return y;} private: int x; int y; };DANKE.
STICK.
-
Der erste ist ein Konstruktor, der 2 Werte entgegennimmt und die Member mit den übergebenen Werten initialisiert (das hinter dem : ist die Initialsierungsliste).
Das zweite ist ein Konstruktor, der einfach den zwei Members 0 zuweist.
-
wobei man beim zweiten Fall auch
cPoint :: cPoint () : x(0), y(0) { }schreiben kann...
-
Generell solltest du Version 1 bevorzugen, da
- nur so die Initialisierung von Basisklassen durchgeführt werden kann
- nur so Konstanten und Referenzen initialisiert werden können
- kein unnötiger Overhead entsteht - es wird sofort mit dem gewünschten Wert initialisiert und nicht erst default initialisiert und dann zugewiesen