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 len
in double hgt
. Vrednosti, vsebovane v teh parametrih, se uporabljajo za inicializacijo spremenljivk člana dolžine in višine.
Ko ustvarimo objekt Room
razreda, 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 Wall
razreda v drugega. Koda konstruktorja kopij je:
Room(Room &obj) ( length = obj.length; height = obj.height; )
Upoštevajte, da ima parameter tega konstruktorja naslov predmeta Wall
razreda.
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.