Warum wird hier Copy Constructor anstelle von normalem Constructor und überladenem Zuweisungsoperator aufgerufen? [Duplikat]

Mögliche Duplikate:
Gibt es in C ++ einen Unterschied zwischen der Kopierinitialisierung und der direkten Initialisierung?
Konstruktoren und Zuweisungsoperatoren kopieren

Ich habe eine Klasse C, in der ich Normal überladen habe, einen Kopierkonstruktor und einen Zuweisungsoperator, um eine Spur dessen zu drucken, was aufgerufen wird.

Ich habe die folgenden Codeteile geschrieben, um zu testen, was wann aufgerufen wird.

C c1;                --> Normal Constuctor .. // understood Fine

C c2;
c2 = c1;             --> Normal constructor + assignment operator .. //understood Fine

C * c3 = new C(C1)   --> Copy constructor  // Understood Fine

C c4 = c1          --> copy constructor // Not Able to understand

Dies scheint mich zu verwirren, da ich in diesem Code, obwohl ich ihn zum Zeitpunkt der Deklaration initialisiere, den Zuweisungsoperator und nicht den Kopierkonstruktor verwende. Verstehe ich das falsch?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage