Constructeurs C ++: types et constructeurs de copie

Dans ce didacticiel, nous allons découvrir le constructeur C ++ et son type avec les exemples d'aide.

Un constructeur est un type spécial de fonction membre qui est appelé automatiquement lors de la création d'un objet.

En C ++, un constructeur porte le même nom que celui de la classe et il n'a pas de type de retour. Par exemple,

 class Wall ( public: // create a constructor Wall() ( // code ) );

Ici, la fonction Wall()est un constructeur de la classe Wall. Notez que le constructeur

  • a le même nom que la classe,
  • n'a pas de type de retour, et
  • est public

Constructeur par défaut C ++

Un constructeur sans paramètres est appelé constructeur par défaut . Dans l'exemple ci-dessus, Wall()est un constructeur par défaut.

Exemple 1: constructeur par défaut C ++

 // C++ program to demonstrate the use of default constructor #include using namespace std; // declare a class class Wall ( private: double length; public: // create a constructor Wall() ( // initialize private variables length = 5.5; cout << "Creating a wall." << endl; cout << "Length = " << length << endl; ) ); int main() ( // create an object Wall wall1; return 0; )

Production:

 Création d'une longueur de mur = 5,5

Ici, lorsque l'objet wall1 est créé, le Wall()constructeur est appelé. Cela définit la variable de longueur de l'objet sur 5.5.

Remarque: Si nous n'avons pas défini de constructeur dans notre classe, le compilateur C ++ créera automatiquement un constructeur par défaut avec un code vide et aucun paramètre.

Constructeur paramétré C ++

En C ++, un constructeur avec des paramètres est appelé constructeur paramétré. Il s'agit de la méthode préférée pour initialiser les données des membres.

Exemple 2: constructeur paramétré C ++

 // C++ program to calculate the area of a wall #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // create parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) double calculateArea() ( return length * height; ) ); int main() ( // create object and initialize data members Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3); cout << "Area of Wall 1: " << wall1.calculateArea() << endl; cout << "Area of Wall 2: " << wall2.calculateArea() << endl; return 0; )

Production:

 Superficie du mur 1: 90,3 Superficie du mur 2: 53,55

Ici, nous avons créé un constructeur paramétré Wall()qui a 2 paramètres: double lenet double hgt. Les valeurs contenues dans ces paramètres sont utilisées pour initialiser la longueur et la hauteur des variables membres.

Lorsque nous créons un objet de la Roomclasse, nous transmettons les valeurs des variables membres comme arguments. Le code pour cela est:

 Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);

Avec les variables membres ainsi initialisées, nous pouvons maintenant calculer l'aire du mur avec la calculateArea()fonction.

Constructeur de copie C ++

Le constructeur de copie en C ++ est utilisé pour copier les données d'un objet vers un autre.

Exemple 3: constructeur de copie C ++

 #include using namespace std; // declare a class class Wall ( private: double length; double height; public: // parameterized constructor Wall(double len, double hgt) ( // initialize private variables length = len; height = hgt; ) // copy constructor with a Wall object as parameter Wall(Wall &obj) ( // initialize private variables length = obj.length; height = obj.height; ) double calculateArea() ( return length * height; ) ); int main() ( // create an object of Wall class Wall wall1(10.5, 8.6); // print area of wall1 cout << "Area of Room 1: " << wall1.calculateArea() << endl; // copy contents of room1 to another object room2 Wall wall2 = wall1; // print area of wall2 cout << "Area of Room 2: " << wall2.calculateArea() << endl; return 0; )

Production

 Superficie de la salle 1: 90,3 Superficie de la salle 2: 90,3

Dans ce programme, nous avons utilisé un constructeur de copie pour copier le contenu d'un objet de la Wallclasse dans un autre. Le code du constructeur de copie est:

 Room(Room &obj) ( length = obj.length; height = obj.height; )

Notez que le paramètre de ce constructeur a l'adresse d'un objet de la Wallclasse.

On attribue ensuite les valeurs des variables du premier objet aux variables correspondantes du second objet. C'est ainsi que le contenu de l'objet est copié.

Dans main(), nous créons ensuite deux objets wall1 et wall2 puis copions le contenu du premier objet dans le second avec le code

 Wall wall2 = wall1;

Remarque : Un constructeur est principalement utilisé pour initialiser des objets. Ils sont également utilisés pour exécuter un code par défaut lors de la création d'un objet.

Articles intéressants...