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

Constructor-Delegatie

Veeg om het menu te tonen

Constructor-delegatie (ook wel constructor chaining of forwarding genoemd) maakt het mogelijk dat de ene constructor een andere aanroept binnen dezelfde klasse om gemeenschappelijke initialisatielogica te hergebruiken.

Syntaxis van Constructor-delegatie

Constructor-delegatie wordt meestal toegepast binnen de syntaxis van een initialisatielijst. Hierbij wordt de dubbelepunt-operator (:) gebruikt, 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

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 kan een overbelaste constructor vanuit een andere constructor worden aangeroepen.

point.h

point.h

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

Constructor-delegatie biedt meerdere voordelen in objectgeoriënteerd programmeren en is handig in gebruik, ondanks de aanvankelijke complexiteit die het kan lijken te hebben.

question mark

Wat is constructor-delegatie?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 13

Vraag AI

expand

Vraag AI

ChatGPT

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

Constructor-Delegatie

Constructor-delegatie (ook wel constructor chaining of forwarding genoemd) maakt het mogelijk dat de ene constructor een andere aanroept binnen dezelfde klasse om gemeenschappelijke initialisatielogica te hergebruiken.

Syntaxis van Constructor-delegatie

Constructor-delegatie wordt meestal toegepast binnen de syntaxis van een initialisatielijst. Hierbij wordt de dubbelepunt-operator (:) gebruikt, 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

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 kan een overbelaste constructor vanuit een andere constructor worden aangeroepen.

point.h

point.h

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

Constructor-delegatie biedt meerdere voordelen in objectgeoriënteerd programmeren en is handig in gebruik, ondanks de aanvankelijke complexiteit die het kan lijken te hebben.

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 13
some-alt