Î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 Room
clasei, 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 Wall
clasei î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 Wall
clasei.
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.