Wenn der Konstruktor mit einem Standardkonstruktorargument aufgerufen wird, wird kein Objekt erstellt.Kopieren und Basiskonstruktor initialisieren nicht C++
class cl{
private:
public:
cl(){cout << "Default used" << endl;};
cl(const cl & cl_object) {cout << "Copy used" << endl;};
cl & operator=(const cl & cl_object){cout << "Assignment used" << endl; return *this;};
};
Wenn ich schreibe:
cl(cl());
keine Meldung angezeigt wird.
Fragen: 1) Warum wird kein Objekt konstruiert? 2) Warum wird der Kopierkonstruktor nicht verwendet?
@NathanOliver Können Sie erklären, wie das ein Duplikat ist? – Nameless
Wie die Antwort sagt, erklärt 'cl (cl());' eine Funktion. Da es sich um eine Funktion und keine Variable handelt, werden Sie keine Konstruktoraufrufe sehen, da Sie nichts konstruieren. – NathanOliver
@NathanOliver Also, wenn ich es richtig verstanden habe mit cl(); Konstruiert nur ein Objekt, aber mit cl (cl()); erklärt eine Funktion. Aber wenn es eine Funktion deklariert sollte nicht der Compiler einen Fehler ausgeben, da ich den Rückgabetyp nicht angegeben habe? – Nameless