C++-constructeurs
C++-constructeurs
In deze zelfstudie leren we over de C++-constructor en zijn type met behulp van de helpvoorbeelden.
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 hij geen retourtype. Bijvoorbeeld,
class Wall {
public:
// create a constructor
Wall() {
// code
}
};
Hier de functie Wall()
is 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 een standaardconstructor.
Voorbeeld 1:C++ standaardconstructor
// C++ program to demonstrate the use of default constructor
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
public:
// default constructor to initialize variable
Wall() {
length = 5.5;
cout << "Creating a wall." << endl;
cout << "Length = " << length << endl;
}
};
int main() {
Wall wall1;
return 0;
}
Uitvoer
Creating a Wall Length = 5.5
Hier, wanneer de muur1 object is gemaakt, de Wall()
constructeur wordt genoemd. Dit stelt de lengte . in variabele van het object naar 5.5
.
Opmerking: Als we geen constructor in onze klasse hebben gedefinieerd, zal de C++-compiler automatisch een standaardconstructor maken met een lege code en zonder parameters.
C++ geparametriseerde constructor
In C++ staat een constructor met parameters bekend als een geparametriseerde constructor. Dit is de voorkeursmethode om ledengegevens te initialiseren.
Voorbeeld 2:C++ geparametriseerde constructor
// C++ program to calculate the area of a wall
#include <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// parameterized constructor to initialize variables
Wall(double len, double hgt) {
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();
return 0;
}
Uitvoer
Area of Wall 1: 90.3 Area of Wall 2: 53.55
Hier hebben we een geparametriseerde constructor Wall()
. gemaakt die 2 parameters heeft:double len
en double hgt
. De waarden in deze parameters worden gebruikt om de lidvariabelen length . te initialiseren en hoogte .
Wanneer we een object van de Wall
. maken klasse, 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 lidvariabelen zo geïnitialiseerd, kunnen we nu de oppervlakte van de muur berekenen met de calculateArea()
functie.
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 <iostream>
using namespace std;
// declare a class
class Wall {
private:
double length;
double height;
public:
// initialize variables with parameterized constructor
Wall(double len, double hgt) {
length = len;
height = hgt;
}
// copy constructor with a Wall object as parameter
// copies data of the obj parameter
Wall(Wall &obj) {
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);
// copy contents of wall1 to wall2
Wall wall2 = wall1;
// print areas of wall1 and wall2
cout << "Area of Wall 1: " << wall1.calculateArea() << endl;
cout << "Area of Wall 2: " << wall2.calculateArea();
return 0;
}
Uitvoer
Area of Wall 1: 90.3 Area of Wall 2: 90.3
In dit programma hebben we een kopieerconstructor gebruikt om de inhoud van één object van de Wall
. te kopiëren klas naar een andere. De code van de kopie-constructor is:
Wall(Wall &obj) {
length = obj.length;
height = obj.height;
}
Merk op dat de parameter van deze constructor het adres heeft van een object van de Wall
klasse.
Vervolgens wijzen we de waarden van de variabelen van de obj . toe object naar de corresponderende variabelen van het object dat de kopie-constructor aanroept. Zo wordt de inhoud van het object gekopieerd.
In main()
, we maken dan twee objecten muur1 en muur2 en kopieer vervolgens de inhoud van wall1 naar muur2 :
// copy contents of wall1 to wall2
Wall wall2 = wall1;
Hier, de muur2 object roept zijn kopie-constructor aan door het adres van de wall1 . door te geven object als zijn argument, d.w.z. &obj = &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.
C Taal