Kursinnhold
C++ OOP
C++ OOP
Konstruktordelegasjon
Konstruktordelegasjon (også kalt konstruktorkjedning eller videresending) gjør det mulig for én konstruktør å kalle en annen innenfor samme klasse for å gjenbruke felles initialiseringslogikk.
Syntaks for konstruktordelegasjon
Konstruktordelegasjon brukes vanligvis innenfor syntaksen til en initialiseringsliste. Det innebærer bruk av kolon (:
)-operatoren, etterfulgt av konstruktøren du ønsker å delegere til, og deretter eventuelle ekstra argumenter eller parametere som må sendes videre.
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; };
Å bruke initialiseringslister for konstruktordelegasjon er ikke påkrevd, men det er generelt anbefalt for klarhet og ytelse. Om nødvendig kan du kalle en overbelastet konstruktør fra en annen 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; };
Potensiell uendelig rekursjon kan oppstå ved bruk av konstruktordelegasjon. Sørg for at konstruktørene er strukturert slik at rekursive kall unngås.
Konstruktordelegasjon gir flere fordeler i objektorientert programmering og er praktisk å bruke, til tross for eventuell innledende kompleksitet de kan virke å ha.
Takk for tilbakemeldingene dine!