Comment implémenter le constructeur de copie en C ++?



Comprendre les constructeurs a été une énigme pour beaucoup. Cet article vous aidera à démystifier le concept de constructeur de copie en C ++

Compréhension Constructeurs a été une énigme pour beaucoup. Cet article vous aidera à démystifier le concept de Copy Constructor en C ++. Les pointeurs suivants seront traités dans cet article,

Alors commençonsavec cet article sur Copy Constructor en C ++





Un constructeur de copie est un constructeur qui initialise un objet d'une classe en utilisant un autre objet de la même classe.

Syntaxe:



Nous avons le mot-clé const car nous voulons rendre la valeur constante et nous assurer qu'elle n'est pas modifiée quelque part dans le code. Comme un constructeur par défaut, un constructeur de copie est également fourni par le compilateur. C'est ce qu'on appelle le constructeur de copie par défaut. Les constructeurs de copie peuvent être rendus privés. Nous ne pouvons pas copier les objets de la classe lorsque nous rendons le constructeur de copie privé.

Voici un exemple de code :

comment implémenter un tas
#include à l'aide de l'espace de noms std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Le constructeur normal est appelé ici test t2 = t1 // Le constructeur de copie est appelé ici cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Production:



Constructeur Output-Copy en C ++ - Edureka

Explication

Le programme ci-dessus est une démonstration de base d'un constructeur de copie. Nous avons un test de classe, avec un membre de données privé de type int appelé x. Ensuite, nous avons un constructeur paramétré, qui affecte 7 aux variables x. Nous avons un constructeur de copie, qui instancie la valeur de t2 avec la valeur de t1. L'adresse de t2 est envoyée qui contient la valeur de t1 et est affectée à x. Il existe une fonction get qui renvoie la valeur de x.

La fonction principale a un objet de test de classe appelé t1. Il y a une valeur associée à cet objet, c'est un paramètre. La fonction principale a un autre objet de test de classe appelé t2. Ceci est initialisé à l'aide de la variable t1 et le constructeur de copie est appelé ici. Enfin, la fonction get est appelée par rapport à t1 et t2 pour obtenir la valeur de x.

Les types

Il existe deux types de constructeur de copie.
⦁ Constructeur de copie peu profonde
⦁ Constructeur de copie profonde

Passer à cet article sur Copy Constructor en C ++

Constructeur de copie superficielle:

Un constructeur de copie superficielle est un constructeur de copie par défaut.

Exemple:

comment trouver la longueur d'un tableau en javascript

Deux personnes accèdent à une base de données en même temps et modifient les valeurs sur deux systèmes différents. S'ils apportent des modifications à la base de données, ces deux modifications seront affichées dans la base de données. Les deux objets pointeront vers le même emplacement mémoire. Il s'agit du constructeur de copie peu profonde. Cela se produit principalement lorsque nous travaillons avec le constructeur de copie par défaut. Voici un exemple de code pour: Shallow Copy Constructor:

#include en utilisant l'espace de noms test de classe std {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Production:

Explication:

Dans le code ci-dessus, nous utilisons un constructeur de copie par défaut fourni par le compilateur. Il s'agit donc d'un constructeur de copie superficielle.

Passer à cet article sur Copy Constructor en C ++

Constructeur de copie profonde

Deep Copy Constructor est un constructeur de copie défini par l'utilisateur.
Par exemple:
Lorsque deux personnes doivent faire une présentation et qu'elles copient toutes les deux à partir de la même source, les copies sont séparées. Ainsi, lorsque vous apportez des modifications, seule l'autre copie n'est pas affectée. C'est Deep Copy Constructor. Les deux objets pointeront vers différents emplacements de mémoire et les modifications apportées à l’un n’auront aucun effet sur l’autre. La mémoire est allouée dynamiquement.

Voici un exemple de code pour: Constructeur de copie profonde:

#include à l'aide de l'espace de noms std class test {private: int x public: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Le constructeur normal est appelé ici test t2 = t1 // Le constructeur de copie est appelé ici cout<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Production:

tableau php print_r

Explication

C'est le même code que nous avons utilisé ci-dessus, donnant une sortie similaire. Il s'agit d'un constructeur de copie défini par l'utilisateur et par conséquent, d'un constructeur de copie profonde.

Ainsi nous sommes arrivés à la fin de cet article sur «Copy Constructor in C ++». Si vous souhaitez en savoir plus, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog et nous vous répondrons dans les plus brefs délais.