Tippfehler Konstruktor Initialisierungsliste
-
Mir passiert gelegentlich follgendes Malheur:
class A { public: A(int foo) : foo_{foo_} {} private: int foo_; };
- g++ warnt nicht - clang schon
- Sollte ich meine Benamungskonvention (deswegen) ändern?
- 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.