Constructori C ++: Tipuri și constructori de copiere

În acest tutorial, vom afla despre constructorul C ++ și tipul acestuia cu exemplele de ajutor.

Un constructor este un tip special de funcție membru care este apelat automat atunci când este creat un obiect.

În C ++, un constructor are același nume cu cel al clasei și nu are un tip return. De exemplu,

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

Aici, funcția Wall()este un constructor al clasei Wall. Observați că constructorul

  • are același nume ca și clasa,
  • nu are un tip de returnare și
  • este public

C ++ Constructor implicit

Un constructor fără parametri este cunoscut ca un constructor implicit . În exemplul de mai sus, Wall()este un constructor implicit.

Exemplul 1: Constructor implicit 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; )

Ieșire:

 Crearea unei lungimi de perete = 5.5

Aici, când este creat obiectul wall1, Wall()se numește constructorul. Aceasta setează variabila lungime a obiectului la 5.5.

Notă: Dacă nu am definit un constructor în clasa noastră, atunci compilatorul C ++ va crea automat un constructor implicit cu un cod gol și fără parametri.

C ++ Constructor parametrizat

În C ++, un constructor cu parametri este cunoscut ca un constructor parametrizat. Aceasta este metoda preferată pentru a inițializa datele despre membri.

Exemplul 2: constructor parametrizat 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; )

Ieșire:

 Suprafața zidului 1: 90,3 Suprafața zidului 2: 53,55

Aici, am creat un constructor parametrizat Wall()care are 2 parametri: double lenși double hgt. Valorile conținute în acești parametri sunt utilizate pentru a inițializa lungimea și înălțimea variabilelor membre.

Când creăm un obiect al Roomclasei, trecem valorile pentru variabilele membre ca argumente. Codul pentru aceasta este:

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

Cu variabilele membre astfel inițializate, putem calcula acum aria peretelui cu calculateArea()funcția.

C ++ Copy Constructor

Constructorul de copiere din C ++ este utilizat pentru a copia date ale unui obiect la altul.

Exemplul 3: Constructor de copiere 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; )

Ieșire

 Suprafața camerei 1: 90,3 Suprafața camerei 2: 90,3

În acest program, am folosit un constructor de copiere pentru a copia conținutul unui obiect al Wallclasei în altul. Codul constructorului de copiere este:

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

Observați că parametrul acestui constructor are adresa unui obiect al Wallclasei.

Apoi atribuim valorile variabilelor primului obiect variabilelor corespunzătoare ale celui de-al doilea obiect. Acesta este modul în care conținutul obiectului este copiat.

În main(), creăm apoi două obiecte wall1 și wall2 și apoi copiem conținutul primului obiect în al doilea cu codul

 Wall wall2 = wall1;

Notă : Un constructor este utilizat în primul rând pentru inițializarea obiectelor. Ele sunt, de asemenea, utilizate pentru a rula un cod implicit atunci când este creat un obiect.

Articole interesante...