constructeur de copie
En C++, une fonction portant le même nom que le nom de la classe et dont les paramètres formels sont des types de référence d'objets de cette classe est appelée un constructeur de copie . Comme le constructeur, le système en génère automatiquement un lorsque nous ne le définissons pas activement. effectuer des affectations simples correspondantes entre deux membres d'objet, utilisées pour initialiser un objet, comme dans la situation suivante :
#include<iostream>usingnamespacestd;#definePI3.1415classCircle{private:doubleR;public:Circle(doubleR);Circle(Circle&A);doublearea();doublegirth();};Circle::Circle(doubleR){cout<<Constructor <<endl;this->R=R;}Circle::Circle(Circle&A){cout<<CopyConstructor<<endl;this->R=AR;}doubleCircle::area(){returnPI*R*R;} doubleCircle::girth(){return2*PI*R;}intmain(){CircleA(5);CircleB(A);return0;}
Dans cet exemple, une classe Circle est définie et un constructeur avec des paramètres et un constructeur de copie sont définis respectivement. Ensuite, l'objet A est défini dans la fonction principale, la valeur initiale est transmise et le constructeur avec des paramètres est appelé. Et définissez l'objet B et initialisez l'objet B via l'objet A. Les résultats en cours d'exécution sont les suivants :
L'objet A défini pour la première fois appelle le constructeur avec des paramètres, et le deuxième objet B est initialisé via l'objet A, donc le constructeur de copie est appelé.
Veuillez également l'essayer sur votre ordinateur.
Vous avez peut-être des questions. Au début, nous avons mentionné que si nous ne définissons pas activement un constructeur de copie, un sera automatiquement généré pour nous, alors pourquoi devons-nous le définir nous-mêmes ? En effet, le constructeur de copie par défaut n'effectue que des tâches simples. Dans certains cas, des problèmes peuvent survenir. Cela implique une copie profonde et une copie superficielle . Nous vous le présenterons en détail dans la section suivante !