Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Constructor-Delegatie | Constructors en Destructors
C++ OOP

book
Constructor-Delegatie

Constructor-delegatie (ook wel constructor chaining of forwarding genoemd) stelt een constructor in staat om een andere constructor binnen dezelfde klasse aan te roepen om gemeenschappelijke initialisatielogica te hergebruiken.

Syntaxis van Constructor-delegatie

Constructor-delegatie wordt meestal gebruikt binnen de syntaxis van een initialisatielijst. Het maakt gebruik van de dubbelepunt (:)-operator, gevolgd door de constructor waarnaar u wilt delegeren, en vervolgens eventuele extra argumenten of parameters die moeten worden doorgegeven.

user_account.h

user_account.h

copy
class UserAccount {
public:
// Primary constructor
UserAccount(int userId, int accessLevel)
: userId(userId), accessLevel(accessLevel)
{
// Constructor body
}

// Delegating constructor (default accessLevel)
UserAccount(int userId) : UserAccount(userId, 0) {
// Constructor body
}

int userId;
int accessLevel;
};
1234567891011121314151617
class UserAccount { public: // Primary constructor UserAccount(int userId, int accessLevel) : userId(userId), accessLevel(accessLevel) { // Constructor body } // Delegating constructor (default accessLevel) UserAccount(int userId) : UserAccount(userId, 0) { // Constructor body } int userId; int accessLevel; };

Het gebruik van initialisatielijsten voor constructor-delegatie is niet verplicht, maar wordt over het algemeen aanbevolen voor duidelijkheid en prestaties. Indien nodig kun je een overbelaste constructor vanuit een andere constructor aanroepen.

point.h

point.h

copy
#include <iostream>

class Point {
public:
// Delegating constructor to initialize default point at origin
Point() {
Point(0, 0);
}

// Main constructor
Point(int x, int y)
: x(x), y(y) {}

int x, y;
};
123456789101112131415
#include <iostream> class Point { public: // Delegating constructor to initialize default point at origin Point() { Point(0, 0); } // Main constructor Point(int x, int y) : x(x), y(y) {} int x, y; };
Note
Opmerking

Potentiële oneindige recursie kan optreden bij het gebruik van constructor-delegatie. Zorg ervoor dat constructors zo zijn gestructureerd dat recursieve aanroep-lussen worden vermeden.

Constructorendelegatie biedt meerdere voordelen in objectgeoriënteerd programmeren en is handig in gebruik, ondanks de eventuele initiële complexiteit die het lijkt te hebben.

question mark

Wat is constructorendelegatie?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 5

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

some-alt