Konstruktorji C ++: vrste in konstruktorji za kopiranje

V tej vadnici bomo s primeri pomoči spoznali konstruktor C ++ in njegovo vrsto.

Konstruktor je posebna vrsta funkcije člana, ki se pri ustvarjanju predmeta samodejno pokliče.

V C ++ ima konstruktor enako ime kot razred in nima vrnjenega tipa. Na primer

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

Tu je funkcija Wall()konstruktor razreda Wall. Upoštevajte, da je konstruktor

  • ima isto ime kot razred,
  • nima vrste vrnitve in
  • je public

Privzeti konstruktor C ++

Konstruktor brez parametrov je znan kot privzeti konstruktor . V zgornjem Wall()primeru je privzeti konstruktor.

Primer 1: Privzeti konstruktor 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; )

Izhod:

 Ustvarjanje dolžine stene = 5,5

Ko se ustvari objekt wall1, se Wall()tukaj pokliče konstruktor. To nastavi spremenljivko dolžine predmeta na 5.5.

Opomba: Če v svojem razredu nismo definirali konstruktorja, bo prevajalnik C ++ samodejno ustvaril privzeti konstruktor s prazno kodo in brez parametrov.

C ++ parametrizirani konstruktor

V jeziku C ++ je konstruktor s parametri znan kot parametrizirani konstruktor. To je najprimernejša metoda za inicializacijo podatkov o članih.

Primer 2: Konstruktor s parametri 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; )

Izhod:

 Površina stene 1: 90,3 Površina stene 2: 53,55

Tu smo ustvarili parametrizirani konstruktor, Wall()ki ima 2 parametra: double lenin double hgt. Vrednosti, vsebovane v teh parametrih, se uporabljajo za inicializacijo spremenljivk člana dolžine in višine.

Ko ustvarimo objekt Roomrazreda, vrednosti za spremenljivke člana posredujemo kot argumente. Koda za to je:

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

S tako inicializiranimi spremenljivkami članov lahko zdaj s calculateArea()funkcijo izračunamo površino stene .

Konstruktor za kopiranje C ++

Konstruktor kopiranja v jeziku C ++ se uporablja za kopiranje podatkov enega predmeta v drugega.

Primer 3: Konstruktor za kopiranje 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; )

Izhod

 Površina sobe 1: 90.3 Površina sobe 2: 90.3

V tem programu smo s konstruktorjem kopiranja kopirali vsebino enega predmeta Wallrazreda v drugega. Koda konstruktorja kopij je:

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

Upoštevajte, da ima parameter tega konstruktorja naslov predmeta Wallrazreda.

Nato vrednosti spremenljivk prvega predmeta dodelimo ustreznim spremenljivkam drugega predmeta. Tako se kopira vsebina predmeta.

V main(), potem smo ustvarili dve predmetov wall1 in wall2 in nato kopirate vsebino iz prvega predmeta na sekundo s kodo

 Wall wall2 = wall1;

Opomba : Konstruktor se uporablja predvsem za inicializacijo predmetov. Uporabljajo se tudi za zagon privzete kode, ko je objekt ustvarjen.

Zanimive Članki...