Делегування Конструктора
Свайпніть щоб показати меню
Делегування конструктора (також називається ланцюжком або форвардингом конструктора) дозволяє одному конструктору викликати інший у межах того самого класу для повторного використання спільної логіки ініціалізації.
Синтаксис делегування конструктора
Делегування конструктора зазвичай використовується у синтаксисі списку ініціалізації. Це передбачає використання оператора двокрапки (:), після якого вказується конструктор, до якого потрібно делегувати, а також додаткові аргументи або параметри, які необхідно передати.
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; };
Використання ініціалізаційних списків для делегування конструкторів не є обов'язковим, але зазвичай рекомендується для зрозумілості та підвищення продуктивності. За потреби можна викликати перевантажений конструктор з іншого конструктора.
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; };
Може виникнути потенційна нескінченна рекурсія при використанні делегування конструкторів. Переконайтеся, що конструктори структуровані так, щоб уникнути рекурсивних циклів виклику.
Делегування конструкторів забезпечує численні переваги в об'єктно-орієнтованому програмуванні та є зручним у використанні, незважаючи на початкову складність, яка може здаватися.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат