Welche Auswirkungen hat das Umschließen einer Initialisierungsliste in Klammern?

8

Welche Auswirkungen hat das Umschließen einer Initialisierungsliste in Klammern? Ist es einfach ein anderes Formular für die Initialisierung der Liste oder funktioniert es nur in bestimmten Szenarien?

Beispiel: a :

%Vor%     
Raginator 19.09.2017, 19:45
quelle

1 Antwort

10

A a(something) sagt Konstrukt a from something . Wenn wir also something durch {1.0f, 0.0f} ersetzen, müssen wir einen Konstruktor finden, in dem der Parametermeter mit {1.0f, 0.0f} initialisiert werden kann. Die einzigen Konstruktoren, die wir haben, sind die Standardkopie- und Verschiebungskonstruktoren, die jeweils const A& und A&& übernehmen.

Also, macht

%Vor%

Erstellt tatsächlich ein temporäres A und verwendet dann dieses temporäre, um a zu initialisieren. In diesem Fall wird der Verschiebungskonstruktor verwendet, da das Objekt beweglich ist, und Verschiebungskonstruktoren ziehen es vor, Konstruktoren zu kopieren, wenn sie mit rvalues ​​arbeiten.

    
NathanOliver 19.09.2017, 19:55
quelle

Tags und Links