Konštruktory C ++: typy a kopírovacie konštruktory

V tomto výučbe sa na príkladoch pomocníka dozvieme o konštruktore C ++ a jeho type.

Konštruktor je špeciálny typ členskej funkcie, ktorá sa volá automaticky pri vytvorení objektu.

V C ++ má konštruktor rovnaký názov ako trieda a nemá návratový typ. Napríklad,

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

Tu je funkcia Wall()konštruktorom triedy Wall. Všimnite si, že konštruktér

  • má rovnaký názov ako trieda,
  • - nemá návratový typ a -
  • je public

C ++ predvolený konštruktor

Konštruktor bez parametrov je známy ako predvolený konštruktor . V príklade vyššie Wall()je to predvolený konštruktor.

Príklad 1: Predvolený konštruktor 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; )

Výkon:

 Vytvorenie dĺžky steny = 5,5

Tu, keď sa vytvorí objekt wall1, zavolá sa Wall()konštruktor. Týmto sa nastaví premenná dĺžky objektu 5.5.

Poznámka: Ak sme v našej triede nedefinovali konštruktor, potom kompilátor C ++ automaticky vytvorí predvolený konštruktor s prázdnym kódom a bez parametrov.

C ++ parametrizovaný konštruktor

V jazyku C ++ je konštruktor s parametrami známy ako parametrizovaný konštruktor. Toto je preferovaný spôsob inicializácie údajov členov.

Príklad 2: C ++ parametrizovaný konštruktor

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

Výkon:

 Plocha steny 1: 90,3 Plocha steny 2: 53,55

Tu sme vytvorili parametrizovaný konštruktor, Wall()ktorý má 2 parametre: double lena double hgt. Hodnoty obsiahnuté v týchto parametroch sa používajú na inicializáciu dĺžky a výšky členských premenných.

Keď vytvoríme objekt Roomtriedy, odovzdáme hodnoty členských premenných ako argumenty. Kód je tento:

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

S takto inicializovanými premennými členov teraz môžeme pomocou funkcie vypočítať plochu steny calculateArea().

Konštruktor kopírovania C ++

Konštruktor kopírovania v C ++ sa používa na kopírovanie údajov jedného objektu do druhého.

Príklad 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; )

Výkon

 Plocha miestnosti 1: 90,3 Plocha miestnosti 2: 90,3

V tomto programe sme použili kopírovací konštruktor na kopírovanie obsahu jedného objektu Walltriedy do druhého. Kód konštruktora kopírovania je:

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

Všimnite si, že parameter tohto konštruktora má adresu objektu Walltriedy.

Potom priradíme hodnoty premenných prvého objektu k zodpovedajúcim premenným druhého objektu. Takto sa skopíruje obsah objektu.

V main(), potom vytvoríme dva objekty wall1 a wall2 a potom skopírujeme obsah prvého objektu do druhého s kódom

 Wall wall2 = wall1;

Poznámka : Konštruktor sa primárne používa na inicializáciu objektov. Používajú sa tiež na spustenie predvoleného kódu pri vytváraní objektu.

Zaujímavé články...