Constructors en member-initialisatielijsten
Initialiseer members overzichtelijk met member-initialisatielijsten
Constructors en member-initialisatielijsten is een gratis C++ Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C++ Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C++ Academy bevat in totaal 4 lessen.
Wat is een constructor?
Een constructor is een speciale methode die wordt uitgevoerd wanneer een object wordt gemaakt. De constructor heeft dezelfde naam als de klasse en geen retourtype.
class Point {
public:
Point() { // default constructor
x_ = 0;
y_ = 0;
}
private:
int x_, y_;
};Constructors met parameters
Constructors kunnen parameters accepteren en je kunt meerdere overloads hebben.
class Point {
int x_, y_;
public:
Point() : x_(0), y_(0) {}
Point(int x, int y) : x_(x), y_(y) {}
};Initialisatielijsten voor leden
De syntaxis : member(value) vóór de body is een initialisatielijst voor leden. Leden worden hier geïnitialiseerd — niet later in de body toegewezen.
class Person {
std::string name_;
int age_;
public:
Person(std::string n, int a) : name_(std::move(n)), age_(a) {}
};Waarom initialisatielijsten gebruiken
Leden worden precies één keer met de juiste waarde geconstrueerd. Zonder de lijst worden leden standaard geconstrueerd en daarna toegewezen — verspilling bij niet-triviale typen.
Volgorde van initialisatie
Leden worden geïnitialiseerd in de volgorde waarin ze in de klasse zijn gedeclareerd — niet in de volgorde van de initialisatielijst. Houd beide volgorden gelijk om verwarring te voorkomen.
Standaardinitialisatoren in de klasse (C++11)
Je kunt leden rechtstreeks in de body van de klasse standaardwaarden geven. Dat is handig wanneer de meeste constructors dezelfde standaardwaarden gebruiken.
class Buffer {
size_t size_ = 0;
char* data_ = nullptr;
public:
Buffer() = default;
Buffer(size_t n) : size_(n), data_(new char[n]) {}
};= default en = delete
Vraag de compiler om een speciale lidfunctie te leveren of te verwijderen:
class Widget {
public:
Widget() = default; // compiler-generated default
Widget(const Widget&) = delete; // disable copy
};Delegerende constructors (C++11)
Een constructor kan een andere constructor van dezelfde klasse aanroepen om initialisatielogica te delen.
class Box {
int w_, h_, d_;
public:
Box(int w, int h, int d) : w_(w), h_(h), d_(d) {}
Box() : Box(1, 1, 1) {} // delegates to the 3-arg ctor
};Expliciete constructors
Constructors met één argument kunnen worden gebruikt bij impliciete conversies. Markeer ze met explicit om onverwachte conversies te voorkomen.
class Vector {
public:
explicit Vector(size_t n);
};
Vector v = 10; // ERROR: explicit prevents this
Vector v(10); // OKDestructors
De destructor ~ClassName() wordt uitgevoerd wanneer een object wordt vernietigd. Gebruik deze om resources vrij te geven (bestanden, sockets, onbewerkte geheugenruimte).
De regel van vijf (vooruitblik)
Als je een van de speciale lidfuncties schrijft (destructor, kopieerconstructor, kopieertoewijzing, verplaatsingsconstructor, verplaatsingstoewijzing), denk dan aan alle vijf. Dit wordt behandeld in de cursus over verplaatsingssemantiek.
Korte controle
Wat bepaalt de volgorde waarin leden van een klasse worden geïnitialiseerd?
Samenvatting
Gebruik constructors om de toestand van een object in te stellen. Geef de voorkeur aan initialisatielijsten voor leden boven toewijzingen in de body. Markeer constructors met één argument als explicit en gebruik = default / = delete om je bedoeling duidelijk te maken.
Leer C++ met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 51
- Lessen
- 203
Veelgestelde vragen
Is de les “Constructors en member-initialisatielijsten” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad C++ Academy, waaronder “Constructors en member-initialisatielijsten”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus C++ Academy bevat in totaal 4 lessen.
Wat leer ik in “Constructors en member-initialisatielijsten”?
Initialiseer members overzichtelijk met member-initialisatielijsten Je oefent met C++ Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met C++ Academy te beginnen?
Ervaring vooraf is niet nodig. C++ Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Constructors en member-initialisatielijsten”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over C++ Academy?
Ja. Elke les over C++ Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- struct versus class: wanneer gebruikt u welke
- Membervariabelen en -methoden
- Constructors en member-initialisatielijsten
- De this-pointer en encapsulatie