Reihenfolge im Konstruktor "sicher"?



  • Hallo, ich hab mal ne Frage und zwar ist folgender Code sicher:

    class Test
    {
    	public:
    		Test(int value_) : value1(value_), value2(value1) {};
    
    	private:
    		int value1;
    		int value2;
    };
    

    , also ist die Reihenfolge der Initialisierung genau so wie ich sie angebe oder könnte es hier jetzt auch passieren dass zuerst value2 initialisiert wird, was dann natürlich in die Hose gehen würde?

    Nach meinen Tests funktioniert das so wie gewünscht, aber ist das auch sichergestellt?



  • Die Reihenfolge der Initialisierungen entspricht immer der Reihenfolge der Variablen-Deklarationen in der Klasse (und nicht der Konstruktor-Initialisierungsliste).



  • Nexus schrieb:

    Variablen-Definitionen

    FTFY



  • Es sind gleichzeitig auch Deklarationen. Oder hast du einen bestimmten Fall im Sinn, wo meine Aussage nicht zutrifft?


  • Mod

    Nexus schrieb:

    Es sind gleichzeitig auch Deklarationen. Oder hast du einen bestimmten Fall im Sinn, wo meine Aussage nicht zutrifft?

    Er meint ~~nicht-~~statische Member. Obwohl nein.

    Jedenfalls ist die Deklaration eines nicht-statischen Members in einer Klasse immer auch eine Definition, deswegen ist sein Post ziemlich sinnlos...



  • Nexus schrieb:

    Die Reihenfolge der Initialisierungen entspricht immer der Reihenfolge der Variablen-Deklarationen in der Klasse (und nicht der Konstruktor-Initialisierungsliste).

    Oha! Dann ist es nicht sicher, das ist sehr gut zu wissen, vielen Dank 👍

    Bzw. schon sicher wenn man die Reihenfolge einhält, aber bestimmt nicht gut^^



  • happystudent schrieb:

    Bzw. schon sicher wenn man die Reihenfolge einhält, aber bestimmt nicht gut^^

    Ich würde sowieso nicht die Member in anderer Reihenfolge initialisieren als deklariert. Gewisse Compiler generieren auch entsprechende Warnungen...



  • Nexus schrieb:

    happystudent schrieb:

    Bzw. schon sicher wenn man die Reihenfolge einhält, aber bestimmt nicht gut^^

    Ich würde sowieso nicht die Member in anderer Reihenfolge initialisieren als definiert. Gewisse Compiler generieren auch entsprechende Warnungen...

    FTFY



  • cooky451 schrieb:

    Nexus schrieb:

    Variablen-Definitionen

    FTFY

    Fucked This up(?) For You? Richtiger wird es so jedenfalls nicht.


Anmelden zum Antworten