C ++ Constructors: typen en kopieerconstructeurs

In deze zelfstudie leren we met behulp van de hulpvoorbeelden over de C ++ -constructor en het type ervan.

Een constructor is een speciaal type lidfunctie die automatisch wordt aangeroepen wanneer een object wordt gemaakt.

In C ++ heeft een constructor dezelfde naam als die van de klasse en heeft deze geen retourtype. Bijvoorbeeld,

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

Hier is de functie Wall()een constructor van de klasse Wall. Merk op dat de constructor

  • heeft dezelfde naam als de klas,
  • heeft geen retourtype, en
  • is public

C ++ standaard constructor

Een constructor zonder parameters staat bekend als een standaardconstructor . In het bovenstaande voorbeeld Wall()is dit een standaardconstructor.

Voorbeeld 1: C ++ Default Constructor

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

Uitgang:

 Een muurlengte maken = 5,5

Hier, wanneer het wall1-object wordt gemaakt, wordt de Wall()constructor aangeroepen. Dit stelt de lengtevariabele van het object in op 5.5.

Opmerking: als we in onze klasse geen constructor hebben gedefinieerd, maakt de C ++ - compiler automatisch een standaardconstructor met een lege code en zonder parameters.

C ++ Geparameteriseerde constructor

In C ++ staat een constructor met parameters bekend als een constructor met parameters. Dit is de voorkeursmethode om lidgegevens te initialiseren.

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

Uitgang:

 Oppervlakte muur 1: 90.3 Oppervlakte muur 2: 53.55

Hier hebben we een constructor met parameters gemaakt Wall()die 2 parameters heeft: double lenen double hgt. De waarden in deze parameters worden gebruikt om de lidvariabelen lengte en hoogte te initialiseren.

Wanneer we een object van de Roomklasse maken, geven we de waarden voor de lidvariabelen door als argumenten. De code hiervoor is:

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

Met de aldus geïnitialiseerde lidvariabelen kunnen we nu met de calculateArea()functie de oppervlakte van de muur berekenen .

C ++ Copy Constructor

De kopieerconstructor in C ++ wordt gebruikt om gegevens van het ene object naar het andere te kopiëren.

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

Uitvoer

 Gebied van kamer 1: 90.3 Gebied van kamer 2: 90.3

In dit programma hebben we een kopieerconstructor gebruikt om de inhoud van het ene object van de Wallklasse naar het andere te kopiëren . De code van de kopieerconstructor is:

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

Merk op dat de parameter van deze constructor het adres heeft van een object van de Wallklasse.

Vervolgens wijzen we de waarden van de variabelen van het eerste object toe aan de overeenkomstige variabelen van het tweede object. Dit is hoe de inhoud van het object wordt gekopieerd.

In maken main()we vervolgens twee objecten wall1 en wall2 en kopiëren we de inhoud van het eerste object naar het tweede met de code

 Wall wall2 = wall1;

Opmerking : een constructor wordt voornamelijk gebruikt om objecten te initialiseren. Ze worden ook gebruikt om een ​​standaardcode uit te voeren wanneer een object wordt gemaakt.

Interessante artikelen...