Урок №126. Ініціалізація нестатичних членів класу

  Юрій  | 

  Оновл. 2 Лют 2021  | 

 144

При написанні класу з декількома конструкторами, необхідність вказувати значення за замовчуванням всім членам в кожному конструкторі призведе до написання зайвого коду. Якщо ви оновите значення за замовчуванням якогось одного члена, то вам доведеться лізти в кожен конструктор.

Починаючи з C++11, звичайним змінним-членам класу (ті, які не використовують ключове слово static) можна задати значення за замовчуванням напряму — використати ініціалізацію:

Результат виконання програми:

length: 3.5 and width: 3.5

Таким чином, ви надаєте значення за замовчуванням вашим змінним-членам, які будуть використовуватися вашими конструкторами, якщо самі конструктори не нададуть ці значення (через списки ініціалізації членів).

Проте конструктори все ще визначають тип об’єктів, які можуть бути створені, наприклад:

Незважаючи на те, що ми надали значення за замовчуванням всім змінним-членам класу, конструктор за замовчуванням не був наданий, тому ми не можемо створити об’єкт класу Something без параметрів.

Якщо надано значення за замовчуванням, і конструктор ініціалізує член через список ініціалізації членів, то пріоритет буде у списку ініціалізації членів:

Результат виконання програми:

length: 4.5 and width: 5.5

Правило: Використовуйте ініціалізацію нестатичних членів для встановлення значень за замовчуванням змінним-членам.

Тест

Завдання №1

Додайте в наступну програму ініціалізацію нестатичних членів і список ініціалізації членів:

Результат виконання програми повинен бути наступним:

color: blue and radius: 20
color: red and radius: 20
color: blue and radius: 30
color: red and radius: 30

Відповідь №1

Завдання №2

Навіщо ми оголосили пустий конструктор за замовчуванням в програмі з завдання №1? Всі ж змінні-члени і так мають значення за замовчуванням.

Відповідь №2

Об’єкт defl класу Thing буде шукати конструктор за замовчуванням. Якщо його не буде, то компілятор видасть помилку.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (2 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *