Kursusindhold
C++ OOP
C++ OOP
Konstruktordelegation
Konstruktordelegation (også kaldet konstruktorkædning eller videresendelse) gør det muligt for én konstruktør at kalde en anden inden for samme klasse for at genbruge fælles initialiseringslogik.
Syntaks for konstruktordelegation
Konstruktordelegation anvendes typisk i syntaksen for en initialiseringsliste. Det indebærer brugen af kolon-operatoren (:
), efterfulgt af den konstruktør, du ønsker at delegere til, samt eventuelle yderligere argumenter eller parametre, der skal videregives.
user_account.h
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; };
Brug af initialiseringslister til konstruktordelegation er ikke påkrævet, men det er generelt anbefalet for klarhed og ydeevne. Om nødvendigt kan du kalde en overbelastet konstruktør fra en anden konstruktør i stedet.
point.h
#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; };
Potentiel uendelig rekursion kan forekomme ved brug af konstruktordelegation. Sørg for, at konstruktørerne er struktureret, så rekursive kald undgås.
Konstruktordelegation giver flere fordele i objektorienteret programmering og er praktisk at anvende, selvom det umiddelbart kan virke komplekst.
Tak for dine kommentarer!