Tippfehler Konstruktor Initialisierungsliste



  • Mir passiert gelegentlich follgendes Malheur:

    class A
    {
    public:
        A(int foo)
            : foo_{foo_}
        {}
    
    private:
        int foo_;
    };
    
    1. g++ warnt nicht 😞 - clang schon
    2. Sollte ich meine Benamungskonvention (deswegen) ändern?
    3. Was passiert hier eigentlich?

    Wird foo_ mit einem uninitialisierten foo_ initialisiert? (godbolt sagt mir, dass g++ alles wegoptimiert, dadurch sollte foo_ einfach uninitialisert bleiben)
    Wieso ist das erlaubt?



  • Nimm einfach bei beiden drn gleichen Namen. In der Initialisierungsliste wird automatisch immer die Membervariable mit dem Parameter initialisiert.


Anmelden zum Antworten