Ich probiere verschiedene Versionen des Aufrufs des Konstruktors aus, und ich kam mit diesem
%Vor%Jede Aussage wird kompiliert, aber wenn ich schreibe
%Vor%Ich bekomme einen Fehler:
erwartete nicht qualifizierte ID vor der String-Konstante
Aber der folgende Code funktioniert gut:
%Vor%Ich verstehe nicht, was genau das Problem mit dem zweiten Code ist. Irgendwelche Ideen?
Was Sie "Zuweisungsformular" nennen, ist eine Kopierinitialisierung .
Es funktioniert so, als ob ein temporäres Objekt aus einem einzelnen Argument erstellt wird, das als Initialisierer angegeben wurde, und dann an den Kopierkonstruktor der Klasse oder den Konstruktor move übergeben wird.
Also, der Code
%Vor%... ist nur syntaktisch ungültig.
Tipp: Anstelle von drei Konstruktoren, bei denen die zweite ein erstes Argument hinzufügt und die dritte ein zweites Argument hinzufügt, können Sie einfach die Standardargumentwerte verwenden:
%Vor% Die :
-Syntax ist eine Konstruktor-Element-Initialisierungsliste.
Es kann manchmal effizienter sein, manchmal notwendig, und ist sowieso in der Regel prägnanter und konventionell.
Sie verwenden nicht die korrekte Grammatik, um ein Objekt aus mehreren Werten zu initialisieren. Wenn du es tust
%Vor%Die Grammer erwartet einen Variablennamen nach dem Komma wie
%Vor%Sie erhalten also einen Fehler wie Sie
haben %Vor%Wenn Sie mehrere Variablen haben, die Sie konstruieren müssen, können Sie nur die folgenden Formulare verwenden
%Vor%Tags und Links c++ constructor