V tomto kurzu se na příkladech nápovědy dozvíme o konstruktoru C ++ a jeho typu.
Konstruktor je speciální typ členské funkce, která se volá automaticky při vytvoření objektu.
V jazyce C ++ má konstruktor stejný název jako třída a nemá návratový typ. Například,
class Wall ( public: // create a constructor Wall() ( // code ) );
Zde je funkce Wall()
konstruktorem třídy Wall
. Všimněte si, že konstruktor
- má stejný název jako třída,
- nemá návratový typ a
- je
public
Výchozí konstruktor C ++
Konstruktor bez parametrů je známý jako výchozí konstruktor . Ve výše uvedeném příkladu Wall()
je výchozí konstruktor.
Příklad 1: Výchozí 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; )
Výstup:
Vytvoření délky stěny = 5,5
Tady, když je vytvořen objekt wall1, Wall()
je volán konstruktor. Tím se nastaví proměnná délky objektu na 5.5
.
Poznámka: Pokud jsme v naší třídě nedefinovali konstruktor, kompilátor C ++ automaticky vytvoří výchozí konstruktor s prázdným kódem a bez parametrů.
C ++ parametrizovaný konstruktor
V C ++ je konstruktor s parametry známý jako parametrizovaný konstruktor. Toto je upřednostňovaná metoda pro inicializaci dat členů.
Příklad 2: C ++ parametrizovaný konstruktor
// 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ýstup:
Plocha stěny 1: 90,3 Plocha stěny 2: 53,55
Zde jsme vytvořili parametrizovaný konstruktor, Wall()
který má 2 parametry: double len
a double hgt
. Hodnoty obsažené v těchto parametrech se používají k inicializaci délky a výšky členských proměnných.
Když vytvoříme objekt Room
třídy, předáme hodnoty pro členské proměnné jako argumenty. Kód pro toto je:
Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);
S takto inicializovanými proměnnými členů nyní můžeme vypočítat plochu stěny pomocí calculateArea()
funkce.
Konstruktor kopírování C ++
Konstruktor kopírování v C ++ se používá ke kopírování dat jednoho objektu do druhého.
Pří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ýstup
Plocha místnosti 1: 90,3 Plocha místnosti 2: 90,3
V tomto programu jsme použili kopírovací konstruktor ke zkopírování obsahu jednoho objektu Wall
třídy do jiného. Kód konstruktoru kopie je:
Room(Room &obj) ( length = obj.length; height = obj.height; )
Všimněte si, že parametr tohoto konstruktoru má adresu objektu Wall
třídy.
Poté přiřadíme hodnoty proměnných prvního objektu k odpovídajícím proměnným druhého objektu. Takto se zkopíruje obsah objektu.
V main()
, potom vytvoříme dva objekty wall1 a wall2 a poté zkopírujeme obsah prvního objektu do druhého s kódem
Wall wall2 = wall1;
Poznámka : Konstruktor se primárně používá k inicializaci objektů. Používají se také ke spuštění výchozího kódu při vytvoření objektu.