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


Anmelden zum Antworten