Zuweisung Initialisierung eines Konstruktors

8

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?

    
Anil 14.09.2016, 16:22
quelle

2 Antworten

11

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.

    
Cheers and hth. - Alf 14.09.2016, 16:27
quelle
4

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%     
NathanOliver 14.09.2016 16:29
quelle

Tags und Links