Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Що таке конструктор класу | Конструктори та Деструктори
C++ ООП
course content

Зміст курсу

C++ ООП

C++ ООП

1. Основи ООП у C++
2. Конструктори та Деструктори
3. Огляд Інкапсуляції
4. Огляд Наслідування
5. Огляд Поліморфізму

book
Що таке конструктор класу

Note
Визначення

Конструктор — це спеціальний метод класу, який викликається під час створення об'єкта. За його допомогою можна ініціалізувати атрибути значущими значеннями.

Використовуючи конструктори, можна спростити створення об'єктів. Без конструктора довелося б встановлювати кожну властивість окремо і, можливо, викликати кілька методів, щоб привести об'єкт у придатний для використання стан.

Основна мета конструктора — ініціалізувати новостворений екземпляр. Він може встановлювати початкові значення атрибутів на основі параметрів, переданих у конструктор, забезпечуючи коректний початковий стан об'єкта.

Синтаксис конструктора

Хоча процес розробки конструктора може здаватися простим, він містить багато специфічних аспектів. Загальний підхід до його створення такий:

student.h

student.h

copy
12345678
class Student { public: Student() { name = 'Default'; } std::string name; };
  • Назва: конструктор має таку ж назву, як і сам клас;

  • Тип, що повертається: конструктори не мають типу, що повертається, навіть void;

  • Параметри: конструктори можуть приймати параметри та можуть бути перевантажені з різними наборами параметрів для забезпечення різних способів ініціалізації об'єктів;

  • Автоматичний виклик: конструктор викликається автоматично компілятором під час створення об'єкта.

Конструктор за замовчуванням

Конструктор за замовчуванням — це конструктор, який може бути викликаний без жодних аргументів. Ось як визначаються та використовуються конструктори за замовчуванням:

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }

Ви можете експериментувати з кодом вище. Логіка, написана у методі Example(), виконується кожного разу, коли створюється екземпляр класу.

Note
Примітка

Спробуйте додати ще один об'єкт або змінити логіку всередині конструктора.

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

main.cpp

main.cpp

copy
123456789101112
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }

Атрибут є фундаментальним типом даних. Автоматично згенерований типовий конструктор не ініціалізує змінні-члени вбудованих типів. Вони матимуть невизначені значення, якщо створити об'єкт і явно не ініціалізувати ці поля.

Note
Примітка

Можливо, ви помітите, що компілятор надає послідовне значення для змінної value, але стандарт цього не вимагає, і можливо, що вона міститиме випадкове значення.

question mark

Коли викликається конструктор?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

course content

Зміст курсу

C++ ООП

C++ ООП

1. Основи ООП у C++
2. Конструктори та Деструктори
3. Огляд Інкапсуляції
4. Огляд Наслідування
5. Огляд Поліморфізму

book
Що таке конструктор класу

Note
Визначення

Конструктор — це спеціальний метод класу, який викликається під час створення об'єкта. За його допомогою можна ініціалізувати атрибути значущими значеннями.

Використовуючи конструктори, можна спростити створення об'єктів. Без конструктора довелося б встановлювати кожну властивість окремо і, можливо, викликати кілька методів, щоб привести об'єкт у придатний для використання стан.

Основна мета конструктора — ініціалізувати новостворений екземпляр. Він може встановлювати початкові значення атрибутів на основі параметрів, переданих у конструктор, забезпечуючи коректний початковий стан об'єкта.

Синтаксис конструктора

Хоча процес розробки конструктора може здаватися простим, він містить багато специфічних аспектів. Загальний підхід до його створення такий:

student.h

student.h

copy
12345678
class Student { public: Student() { name = 'Default'; } std::string name; };
  • Назва: конструктор має таку ж назву, як і сам клас;

  • Тип, що повертається: конструктори не мають типу, що повертається, навіть void;

  • Параметри: конструктори можуть приймати параметри та можуть бути перевантажені з різними наборами параметрів для забезпечення різних способів ініціалізації об'єктів;

  • Автоматичний виклик: конструктор викликається автоматично компілятором під час створення об'єкта.

Конструктор за замовчуванням

Конструктор за замовчуванням — це конструктор, який може бути викликаний без жодних аргументів. Ось як визначаються та використовуються конструктори за замовчуванням:

main.cpp

main.cpp

copy
1234567891011121314
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }

Ви можете експериментувати з кодом вище. Логіка, написана у методі Example(), виконується кожного разу, коли створюється екземпляр класу.

Note
Примітка

Спробуйте додати ще один об'єкт або змінити логіку всередині конструктора.

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

main.cpp

main.cpp

copy
123456789101112
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }

Атрибут є фундаментальним типом даних. Автоматично згенерований типовий конструктор не ініціалізує змінні-члени вбудованих типів. Вони матимуть невизначені значення, якщо створити об'єкт і явно не ініціалізувати ці поля.

Note
Примітка

Можливо, ви помітите, що компілятор надає послідовне значення для змінної value, але стандарт цього не вимагає, і можливо, що вона міститиме випадкове значення.

question mark

Коли викликається конструктор?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 1
some-alt