C ++ -rakentajat: tyypit ja kopiorakentajat

Tässä opetusohjelmassa opitaan C ++ -konstruktorista ja sen tyypistä ohjeen esimerkkien avulla.

Konstruktori on erityistyyppinen jäsenfunktio, joka kutsutaan automaattisesti, kun objekti luodaan.

C ++: ssa konstruktorilla on sama nimi kuin luokan nimellä, eikä sillä ole palautustyyppiä. Esimerkiksi,

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

Tässä funktio Wall()on luokan konstruktori Wall. Huomaa, että rakentaja

  • on sama nimi kuin luokassa,
  • ei ole palautustyyppiä ja
  • On public

C ++ - oletusrakentaja

Rakentaja, jolla ei ole parametreja, tunnetaan oletuskonstruktorina . Yllä olevassa esimerkissä Wall()on oletusrakentaja.

Esimerkki 1: C ++ - oletusrakentaja

 // 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; )

Tuotos:

 Seinän pituuden luominen = 5.5

Tässä, kun wall1-objekti luodaan, Wall()kutsutaan konstruktoria. Tämä asettaa objektin pituusmuuttujaksi 5.5.

Huomaa: Jos emme ole määrittäneet rakentajaa luokassamme, C ++ -kääntäjä luo automaattisesti oletusrakentajan, jolla on tyhjä koodi eikä parametreja.

C ++ -parametroitu rakentaja

C ++: ssa konstruktori, jolla on parametreja, tunnetaan parametrisoituna konstruktorina. Tämä on suositeltava tapa alustaa jäsendata.

Esimerkki 2: C ++ -parametroitu rakentaja

 // 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; )

Tuotos:

 Muurin 1 alue: 90,3 Muurin 2 alue: 53,55

Tässä olemme luoneet parametrisoidun konstruktorin, Wall()jolla on 2 parametria: double lenja double hgt. Näiden parametrien arvoja käytetään jäsenmuuttujien pituuden ja korkeuden alustamiseen.

Kun luomme Roomluokan objektin , välitämme jäsenmuuttujien arvot argumentteina. Tämän koodi on:

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

Näin alustettujen jäsenmuuttujien avulla voimme nyt laskea seinän pinta-alan calculateArea()funktiolla.

C ++ kopionrakentaja

Kopiointirakentajaa C ++: ssa käytetään objektin tietojen kopioimiseen toiseen.

Esimerkki 3: C ++ Copy Constructor

 #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; )

Tuotos

 Huoneen 1 pinta-ala: 90,3 Huoneen 2 pinta-ala: 90,3

Tässä ohjelmassa olemme käyttäneet kopiorakentajaa kopioimaan Wallluokan yhden objektin sisällön toiseen. Kopiorakentajan koodi on:

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

Huomaa, että tämän konstruktorin parametrilla on Wallluokan objektin osoite .

Määritämme sitten ensimmäisen objektin muuttujien arvot toisen objektin vastaaviin muuttujiin. Näin kohteen sisältö kopioidaan.

Sisään main()luodaan sitten kaksi objektia wall1 ja wall2 ja kopioidaan sitten ensimmäisen objektin sisältö toiseen koodilla

 Wall wall2 = wall1;

Huomaa : Rakentajaa käytetään ensisijaisesti esineiden alustamiseen. Niitä käytetään myös oletuskoodin suorittamiseen, kun objekti luodaan.

Mielenkiintoisia artikkeleita...