========= Antworten [TOC] ========= Hier sind die Antworten zu den einzelnen Fragen: * Das erste Beispiel ist nicht zulässig. _X_ hat keinen _default constructor_, da ein Konstruktor mit einem `int`-Parameter deklariert wurde. In Folge davon hat auch _Y_ keinen _default constructor_, weil die Variablenkomponente _x_ keinen solchen hat. Der Übersetzer stört sich dann an der Deklaration von „`Y y;`“, da hierfür ein _default constructor_ benötigt wird, den es nicht gibt. :import: session02/case01.cpp ---- SHELL (path=session02,hostname=theon) --------------- g++ -Wall -c case01.cpp ---------------------------------------------------------- * Das zweite Beispiel ist zulässig, führt aber zu einer Warnung des Übersetzers, da im _default constructor_ von _Z_ die Reihenfolge der Konstruktionen von der Reihenfolge der entsprechenden Deklarationen abweicht. Es gilt aber immer letztere Reihenfolge, so dass zuerst _X_ konstruiert wird, gefolgt von _Y_: :import: session02/case02.cpp ---- SHELL (path=session02,hostname=theon) --------------- g++ -Wall -o case02 case02.cpp ./case02 ---------------------------------------------------------- * Das dritte Beispiel ist nicht zulässig, da konstante Variablendeklarationen nur dann per _default constructor_ konstruiert werden können, wenn diese einen expliziten besitzen. Somit entfällt bei _X_ der _default constructor_ und die Deklaration `X x;` führt entsprechend zu einem Fehler. Zudem gibt der Übersetzer eine Warnung, dass `X` in dieser Form nicht sinnvoll ist. :import: session02/case03.cpp ---- SHELL (path=session02,hostname=theon) --------------- g++ -Wall -c case03.cpp ---------------------------------------------------------- Die Sache kann behoben werden, indem die mit `const` deklarierte Variable explizit konstruiert wird: :import: session02/case03-fixed.cpp * Das vierte Beispiel: :import: session02/case04.cpp ---- SHELL (path=session02,hostname=theon) --------------- g++ -Wall -o case04 case04.cpp ./case04 ---------------------------------------------------------- :navigate: up -> doc:index back -> doc:session02/page01 next -> doc:session02/page03