C ++ konstruktører: Typer og kopikonstruktører

I denne opplæringen vil vi lære om C ++ - konstruktøren og dens type med hjelpeksemplene.

En konstruktør er en spesiell type medlemsfunksjon som kalles automatisk når et objekt opprettes.

I C ++ har en konstruktør samme navn som klassen, og den har ikke returtype. For eksempel,

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

Her er funksjonen Wall()en konstruktør av klassen Wall. Legg merke til at konstruktøren

  • har samme navn som klassen,
  • har ikke returtype, og
  • er public

C ++ standardkonstruktør

En konstruktør uten parametere er kjent 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; )

Produksjon:

 Opprette en vegglengde = 5.5

Her, når wall1-objektet er opprettet, Wall()kalles konstruktøren. Dette setter lengdevariabelen til objektet til 5.5.

Merk: Hvis vi ikke har definert en konstruktør i klassen vår, vil C ++ - kompilatoren automatisk opprette en standardkonstruktør med en tom kode og ingen parametere.

C ++ Parameterized Constructor

I C ++ er en konstruktør med parametere kjent som en parameterisert konstruktør. Dette er den foretrukne metoden for å initialisere 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; )

Produksjon:

 Område av vegg 1: 90,3 Område av vegg 2: 53,55

Her har vi opprettet en parameterisert konstruktør Wall()som har to parametere: double lenog double hgt. Verdiene i disse parameterne brukes til å initialisere medlemsvariablene lengde og høyde.

Når vi lager et objekt av Roomklassen, sender vi verdiene for medlemsvariablene som argumenter. Koden for dette er:

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

Med medlemsvariablene som dermed er initialisert, kan vi nå beregne veggområdet med calculateArea()funksjonen.

C ++ Copy Constructor

Kopikonstruktøren i C ++ brukes til å kopiere data fra ett objekt til et annet.

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

Produksjon

 Område i rom 1: 90.3 Område i rom 2: 90.3

I dette programmet har vi brukt en kopikonstruktør til å kopiere innholdet til ett objekt i Wallklassen til et annet. Koden til kopikonstruktøren er:

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

Legg merke til at parameteren til denne konstruktøren har adressen til et objekt i Wallklassen.

Vi tilordner deretter verdiene til variablene til det første objektet til de tilsvarende variablene til det andre objektet. Slik kopieres innholdet i objektet.

I main()oppretter vi deretter to objekter wall1 og wall2 og kopierer deretter innholdet av det første objektet til det andre med koden

 Wall wall2 = wall1;

Merk : En konstruktør brukes primært til å initialisere objekter. De brukes også til å kjøre en standardkode når et objekt opprettes.

Interessante artikler...