Cursusinhoud
C++ OOP
C++ OOP
Wat Is een Constructor van de Klasse
Constructor is een speciale methode van een klasse die wordt aangeroepen wanneer een object wordt aangemaakt. Hiermee kun je de attributen initialiseren met betekenisvolle waarden.
Door gebruik te maken van constructors kun je het aanmaken van objecten vereenvoudigen. Zonder een constructor zou je elke eigenschap afzonderlijk moeten instellen en mogelijk meerdere methoden moeten aanroepen om het object in een bruikbare toestand te krijgen.
Het primaire doel van een constructor is het initialiseren van de nieuw aangemaakte instantie. Deze kan de beginwaarden van de attributen instellen op basis van de aan de constructor doorgegeven parameters, zodat het object in een geldige toestand start.
Syntax van Constructor
Hoewel het ontwikkelen van een constructor eenvoudig lijkt, zijn er tal van specifieke aandachtspunten. De algemene aanpak voor het maken ervan is:
student.h
class Student { public: Student() { name = 'Default'; } std::string name; };
Naam: constructor heeft dezelfde naam als de klasse zelf;
Returntype: constructors hebben geen returntype, zelfs niet
void
;Parameters: constructors kunnen parameters accepteren en kunnen worden overbelast met verschillende sets parameters om verschillende manieren van initialiseren van objecten mogelijk te maken;
Automatische aanroep: constructor wordt automatisch aangeroepen door de compiler wanneer een object wordt aangemaakt.
Standaardconstructor
Een standaardconstructor is een constructor die kan worden aangeroepen zonder argumenten. Hieronder volgt hoe standaardconstructors worden gedefinieerd en gebruikt:
main.cpp
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }
Je kunt experimenteren met de bovenstaande code. De logica die is geschreven in de Example()-methode wordt elke keer uitgevoerd wanneer een instantie van de klasse wordt aangemaakt.
Probeer een extra object toe te voegen of de logica binnen de constructor aan te passen.
Als er geen constructor is gedefinieerd, genereert de compiler een standaardconstructor. Het gedrag hiervan hangt af van de typen lidvariabelen: fundamentele typen, standaard-constructeerbare typen of door de gebruiker gedefinieerde typen.
main.cpp
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }
Een attribuut is een fundamenteel gegevenstype. De automatisch gegenereerde standaardconstructor initialiseert lidvariabelen van ingebouwde typen niet. Deze zullen onbepaalde waarden hebben als u een object aanmaakt en deze velden niet expliciet initialiseert.
Het kan zijn dat de compiler een consistente waarde voor de value-variabele levert, maar de standaard vereist dit niet en het is mogelijk dat deze een willekeurige waarde bevat.
Bedankt voor je feedback!