@Swordfish sagte in Destruktor wird doppelt ausgeführt: @Flip-Flop_Träger sagte in Destruktor wird doppelt ausgeführt: mir persönlich geht dabei die einfache Lesbarkeit des Codes verloren. animal::animal(int foo, int bar, int qux = 42) : foo { foo }, bar { bar }, qux { qux } {} Kann ich nicht so wirklich nachvollziehen. ... Mal ganz davon abgesehen, dass auch ein funktionaler Unterschied besteht (Initialisierung v.s. Zuweisung). Ich würde ebenfalls empfehlen, die Konstruktor Initialisierungsliste zu verwenden, und dabei auch empfehlenswert: In der selben Reihenfolge, wie die Member innerhalb der Klasse definiert sind. Sonst könnte da auch Verwechslung aufkommen in Bezug auf die Initialisierungsreihenfolge. Bonus Tipp: Als Daumenregel alle Konstruktoren, welche sich mit einem einzigen Argument aufrufen lassen, sollten als explicit definiert werden, also: explicit animal(int p_i); //Konstruktor