Konstruktoreiden Delegointi
Rakentajan delegointi (tunnetaan myös nimillä rakentajaketjutus tai eteenpäin ohjaaminen) mahdollistaa sen, että yksi rakentaja kutsuu toista saman luokan sisällä uudelleenkäyttääkseen yhteistä alustamislogiikkaa.
Rakentajan delegoinnin syntaksi
Rakentajan delegointia käytetään yleensä alustamislistan syntaksissa. Siinä käytetään kaksoispistettä (:
) ja sen jälkeen kutsuttavaa rakentajaa sekä mahdollisia lisäargumentteja tai -parametreja, jotka täytyy välittää.
user_account.h
1234567891011121314151617class 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; };
Alustelulistojen käyttäminen konstruktorin delegoinnissa ei ole pakollista, mutta sitä suositellaan yleensä selkeyden ja suorituskyvyn vuoksi. Tarvittaessa voit kutsua ylikuormitettua konstruktoria toisesta konstruktorista.
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; };
Mahdollinen ääretön rekursio voi ilmetä käytettäessä konstruktorin delegointia. Varmista, että konstruktorit on rakennettu siten, että rekursiivisia kutsusilmukoita ei synny.
Konstruktoreiden delegointi tarjoaa useita etuja olio-ohjelmoinnissa ja on kätevä käyttää, huolimatta mahdollisesta alkuperäisestä monimutkaisuudesta.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme