C++- constructeurs
Constructeurs
Een constructor in C++ is een speciale methode die automatisch wordt aangeroepen wanneer een object van een klasse wordt gemaakt.
Om een constructor te maken, gebruikt u dezelfde naam als de klasse, gevolgd door haakjes ()
:
Voorbeeld
class MyClass { // The class
public:
// Access specifier
MyClass() {
// Constructor
cout << "Hello World!";
}
};
int main() {
MyClass myObj; // Create an object of MyClass (this will call
the constructor)
return 0;
}
Opmerking: de constructor heeft dezelfde naam als de klasse, het is altijd public
, en het heeft geen retourwaarde.
Constructorparameters
Constructors kunnen ook parameters gebruiken (net als reguliere functies), wat handig kan zijn voor het instellen van initiële waarden voor attributen.
De volgende klasse heeft brand
, model
en year
attributen, en een constructor met verschillende parameters. Binnen de constructor stellen we de attributen gelijk aan de constructorparameters ( brand=x
, enz.). Wanneer we de constructor aanroepen (door een object van de klasse te maken), geven we parameters door aan de constructor, die de waarde van de corresponderende attributen op hetzelfde instelt:
Voorbeeld
class Car { // The class
public: // Access specifier
string brand; // Attribute
string model; // Attribute
int year; // Attribute
Car(string x, string y, int z)
{ // Constructor with parameters
brand =
x;
model = y;
year = z;
}
};
int main() {
//
Create Car objects and call the constructor with different values
Car carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang",
1969);
// Print values
cout << carObj1.brand << " "
<< carObj1.model << " " << carObj1.year << "\n";
cout <<
carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}
Net als functies kunnen constructeurs ook buiten de klasse worden gedefinieerd. Declareer eerst de constructor binnen de klasse en definieer deze vervolgens buiten de klasse door de naam van de klasse op te geven, gevolgd door de scope-resolutie- ::
operator, gevolgd door de naam van de constructor (die hetzelfde is als de klasse):
Voorbeeld
class Car { // The class
public: // Access
specifier
string brand; // Attribute
string model; // Attribute
int year;
// Attribute
Car(string x, string y, int z); //
Constructor declaration
};
// Constructor definition outside the
class
Car::Car(string x, string y, int z) {
brand = x;
model = y;
year = z;
}
int main() {
// Create
Car objects and call the constructor with different values
Car
carObj1("BMW", "X5", 1999);
Car carObj2("Ford", "Mustang", 1969);
// Print values
cout << carObj1.brand << " " <<
carObj1.model << " " << carObj1.year << "\n";
cout <<
carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n";
return 0;
}