Ich habe mir ein paar andere Fragen dazu angeschaut, aber ich verstehe nicht, warum ein Standardkonstruktor in meinem Fall überhaupt aufgerufen werden sollte. Ich könnte nur einen Standardkonstruktor bereitstellen, aber ich möchte verstehen, warum es das tut und was es betrifft.
%Vor%Ich habe eine Klasse namens ProxyPiece mit einer Member-Variable von CubeGeometry. Der Konstruktor soll eine CubeGeometry aufnehmen und sie der Member-Variable zuweisen. Hier ist die Überschrift:
%Vor%und die Quelle:
%Vor%Der Header für die Würfelgeometrie sieht so aus. Es macht für mich keinen Sinn, einen Standardkonstruktor zu verwenden. Brauche ich es trotzdem?:
%Vor%Ihr Standardkonstruktor wird hier implizit aufgerufen:
%Vor%Sie möchten
%Vor%Andernfalls entspricht Ihr ctor
%Vor%Die Sache nach dem Doppelpunkt wird als Mitgliederinitialisierungsliste bezeichnet.
Übrigens würde ich das Argument als const CubeGeometry& c
anstelle von CubeGeomety& c
nehmen, wenn ich Sie wäre.
Die Member-Initialisierung tritt auf, wenn der Konstruktor beginnt. Wenn Sie in der Initialisierungsliste des Konstruktors keinen Initialisierer angeben, wird das Element standardmäßig erstellt. Wenn Sie den Konstruktor, der zum Initialisieren des Mitglieds cube
verwendet werden soll, kopieren möchten, verwenden Sie die Elementinitialisierungsliste:
Alles nach dem Doppelpunkt ist die Initialisierungsliste. Dies sagt einfach, dass cube
mit c
initialisiert werden sollte.
Wie Sie es hatten, wurde das cube
Mitglied zuerst standardmäßig initialisiert und dann c
wurde Kopie zugewiesen .
Tags und Links c++ constructor member default-constructor