Konstruktor



  • Hallo zusammen,
    bin noch sehr unerfahren, was die Programmierung mit c++ anbelangt und brauche daher Eure Hilfe.
    Habe eine class "Counter". In der class Counter ist ein Standardkonstruktor:
    Counter(); deklariert. Habe verstanden, dass die folgende Implementierung:
    Counter::Counter():
    itsVal(0)
    {};
    die private variable mit 0 initialisiert. Aber wie ist der 2 Doppelpunkt zu lesen??
    Könnte ich es auch anders schreiben?
    z.B.
    Counter::Counter()
    {
    itsVal(0)
    }
    Danke für Eure Hilfe......



  • der zweite ':' zeigt den begin einer initialisierungsliste an.
    wenn du eine variable nicht initialisiern musst, kannst du im konstruktor einer variable einen wert zuweisen.

    Counter::Counter(void)
    {
       my_var = 10;  /* wenn my_var z.b. ein 'int' ist */
    }
    

    wenn du jedoch z.b. eine referenz als variable hast oder eine klasse, welche keinen std-ctor hat, dann musst du das in der initialisierungsliste machen.

    Meep Meep



  • class Counter
    {
    public:
      Counter::Counter() : itsVal1(0)
      { 
         itsVal2=0;
      }
    private:
      int itsVal1;
      int itsVal2;
    

    der unterschied der beiden Varianten ist folgender.
    itsVal1 wird bereits bei der Initialiserung (also anlegen im speicher) beim Erstellen eines Counter-Objekts der Wert "0" zugewiesen.
    itsVal2 wird mit einem undefinierten Wert initialisiert und anschließend der der Wert "0" zugwiesen.



  • Vielen Dank, jetz hab ich es verstanden.


Anmelden zum Antworten