Lors de l'appel du constructeur avec un argument constructeur par défaut, aucun objet n'est construit.Le constructeur de copie et de base n'initialise pas 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;};
};
Quand j'écris:
cl(cl());
aucun message s'affiche.
Questions: 1) Pourquoi aucun objet n'est construit? 2) Pourquoi le constructeur de copie n'est pas utilisé?
@NathanOliver Pouvez-vous expliquer comment il s'agit d'un doublon? – Nameless
Comme la réponse dit, 'cl (cl());' déclare une fonction. Puisque c'est une fonction et non une variable, vous ne verrez aucun appel de constructeur puisque vous ne construisez rien. – NathanOliver
@NathanOliver Donc si je le comprends correctement en utilisant cl(); ne construit qu'un objet mais en utilisant cl (cl()); déclare une fonction. Mais s'il déclare une fonction, le compilateur ne devrait-il pas générer une erreur puisque je n'ai pas spécifié le type de retour? – Nameless