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 len
a 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 Room
triedy, 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 Wall
triedy 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 Wall
triedy.
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.