Основи програмування на С ++ для початківців

Перезавантажений конструктор класу

у статті Конструктор і деструктор класу ми вже зустрічалися з перевантаженим конструктором в коді, але не акцентували на цьому увагу. Перевантаження конструкторів дуже схожа з перевантаженням функцій. Конструкторів в обумовленому класі може бути кілька – по мірі необхідності. Вони повинні мати однакове ім'я, ідентичне імені класу і обов'язково повинні відрізнятися сигнатурою.

Наприклад: один з конструкторів не приймає параметри, другий приймає два параметри, третій приймає три параметри. пізніше, під час створення об'єкта, параметри передаються в якості аргументів. Так компілятор зможе визначити, який з оголошених конструкторів застосувати при створенні об'єкта.

Рассмотрим пример:

перевантажений конструктор класу з ++, основы программирования для начинающих, c ++ з нуля На цьому прикладі досить легко побачити, чим викликана необхідність перевантаження конструкторів. Основний сенс в тому, щоб дати можливість програмісту вибрати найбільш підходящий спосіб ініціалізації об'єкта.

Тут представлений найпоширеніший варіант перевантаження конструкторів. А саме конструктор з параметрами і другий без параметрів. часто, програмісту бувають необхідні обидва подібних конструктора, так як конструктор з параметрами зручно використовувати, працюючи з поодинокими об'єктами. Але він не може бути використаний, например, для ініціалізації динамічного масиву об'єктів класу.

При кожному оголошенні об'єкта класу треба застосовувати відповідний певним конструкторам спосіб оголошення.

Конструктор можна перевантажувати стільки раз, скільки вважаєте за потрібне. Але, як буває у більшості випадків, бажано дотримуватися золотої середини. Перевантажуйте його тільки для найбільш поширених ситуацій.

хочеться додати, що деструкція, на відміну від конструктора, перевантажений бути не може, так як він ніяких параметрів не приймає.

2 думки про "Перезавантажений конструктор класу

  1. Тут добре б додати:
    – якщо ви описуєте клас без опису конструктора взагалі, то для класу створюється конструктор за замовчуванням без параметрів;
    – але як тільки ви додаєте хоча б один конструктор, замовчуваний конструктор без параметрів чи не створюється (це може потім спантеличити при створенні об'єктів);
    – якщо ж все-таки потрібен і конструктор без параметрів, в тому числі, то його потрібно описати явно.

    І ще…
    Часто замість опису декількох конструкторів зручно створити один конструктор, але з декількома параметрами, певними з замовчує значеннями:

    class my {
    my( int first = 0, float second = 1.0, char *title = "object" ) {
    // ...
    }
    }
    ...
    my m1(), m2( 3 ), m3( 4, -5.5 ), m4( 5, 1.0, "new_object" );

  2. Свого часу збивало з пантелику слово “перевантажений”-навіщо його перевантажують, чому так не люблять? Потім пояснив собі, що це перезавантажених.

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *