I denne vejledning lærer vi om C ++ - konstruktøren og dens type med hjælpeksemplerne.
En konstruktør er en speciel type medlemsfunktion, der kaldes automatisk, når et objekt oprettes.
I C ++ har en konstruktør det samme navn som klassen, og den har ikke en returtype. For eksempel,
class Wall ( public: // create a constructor Wall() ( // code ) );
Her er funktionen Wall()
en konstruktør af klassen Wall
. Bemærk, at konstruktøren
- har samme navn som klassen,
- ikke har en returtype, og
- er
public
C ++ standardkonstruktør
En konstruktør uden parametre er kendt som en standardkonstruktør . I eksemplet ovenfor Wall()
er en standardkonstruktør.
Eksempel 1: C ++ standardkonstruktør
// 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; )
Produktion:
Oprettelse af en væglængde = 5.5
Her, når wall1-objektet oprettes, Wall()
kaldes konstruktøren. Dette indstiller længdevariablen for objektet til 5.5
.
Bemærk: Hvis vi ikke har defineret en konstruktør i vores klasse, opretter C ++ compileren automatisk en standardkonstruktør med en tom kode og ingen parametre.
C ++ Parameterized Constructor
I C ++ er en konstruktør med parametre kendt som en parametreret konstruktør. Dette er den foretrukne metode til initialisering af medlemsdata.
Eksempel 2: C ++ Parameterized Constructor
// 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; )
Produktion:
Område af mur 1: 90,3 Område af mur 2: 53,55
Her har vi oprettet en parameteriseret konstruktør, Wall()
der har 2 parametre: double len
og double hgt
. Værdierne i disse parametre bruges til at initialisere medlemsvariablerne længde og højde.
Når vi opretter et objekt i Room
klassen, sender vi værdierne for medlemsvariablerne som argumenter. Koden til dette er:
Wall wall1(10.5, 8.6); Wall wall2(8.5, 6.3);
Med de således initialiserede medlemsvariabler kan vi nu beregne væggens areal med calculateArea()
funktionen.
C ++ Copy Constructor
Kopikonstruktøren i C ++ bruges til at kopiere data fra et objekt til et andet.
Eksempel 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; )
Produktion
Område i rum 1: 90.3 Område i rum 2: 90.3
I dette program har vi brugt en kopikonstruktør til at kopiere indholdet af et objekt i Wall
klassen til et andet. Kopikonstruktørens kode er:
Room(Room &obj) ( length = obj.length; height = obj.height; )
Bemærk, at parameteren til denne konstruktør har adressen på et objekt i Wall
klassen.
Vi tildeler derefter værdierne for variablerne for det første objekt til de tilsvarende variabler for det andet objekt. Sådan kopieres indholdet af objektet.
I main()
opretter vi derefter to objekter wall1 og wall2 og kopierer derefter indholdet af det første objekt til det andet med koden
Wall wall2 = wall1;
Bemærk : En konstruktør bruges primært til at initialisere objekter. De bruges også til at køre en standardkode, når et objekt oprettes.