Kursinnehåll
C++ OOP
C++ OOP
Konstruktordelegation
Konstruktordelegation (även kallad konstruktorkedjning eller vidarebefordran) gör det möjligt för en konstruktor att anropa en annan inom samma klass för att återanvända gemensam initialiseringslogik.
Syntax för konstruktordelegation
Konstruktordelegation används vanligtvis inom syntaxen för en initialiseringslista. Det innebär användning av kolon (:
)-operatorn, följt av den konstruktor du vill delegera till, och sedan eventuella ytterligare argument eller parametrar som behöver skickas vidare.
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; };
Att använda initieringslistor för konstruktordelegation är inte ett krav, men det är generellt rekommenderat för tydlighet och prestanda. Vid behov kan du anropa en överlagrad konstruktor från en annan konstruktor istället.
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; };
Potentiell oändlig rekursion kan uppstå vid användning av konstruktordelegation. Säkerställ att konstruktorerna är strukturerade för att undvika rekursiva anropsslingor
Konstruktordelegation ger flera fördelar inom objektorienterad programmering och är bekvämt att använda, trots eventuell initial komplexitet.
Tack för dina kommentarer!