Уроки C++

#20 – Конструктори, деструктори та вказівник this

#20 – Конструктори, деструктори та вказівник this

У кожному класі ви можете описувати конструктори, деструктори та вказівник this. Про те, що це таке, навіщо воно потрібне і як з ним можна працювати – буде розказано у відео.

Відеоурок

Telegram group

Підписуйтесь на нашу групу в Телеграмі 🇺🇦

Конструктор класу – дуже зручний і за своїм виглядом схожий зі звичайними функціями. Завдяки конструктору ми можемо встановити значення для об'єкта відразу при його створенні.


Конструктор повинен мати однакову назву з класом. Приклад створення конструктора показаний нижче:

class Book {
private:
	int pages;
	float weight;
public: 
	char name;

	void getInfoBook () {
		cout << "У книзі " << name << " знаходиться " << pages << " сторінок. " << endl;
		cout << "При цьому вона важить " << weight << endl;
	} 
 
	Book (int _pages, float _weight) {
		pages = _pages;
		weight = _weight;
	}
 
	Book (int _pages, float _weight, char _name) {
		pages = _pages;
		weight = _weight;
		name = _name;
	}
};

В одному класі може бути відразу кілька конструкторів. Створивши кілька конструкторів, ми можемо передавати різну кількість параметрів при створенні об'єкта.


Компилятор сам визначає який конструктор необхідно використовувати в залежності від переданих параметрів і їх типів даних. 


У коді вище змінні йдуть з модифікатором доступу private. Справа в тому, що всі змінні краще робити або private, або protected. Доступ до змінних повинен здійснюватися тільки за допомогою методів і конструкторів. Доступ до полів напряму повинен бути закритий.


Додатково створимо два об'єкти і виведемо інформацію:

int main() {
	Book sherlock_holms(460, 1.7f); // Використовуємо 1 конструктор
	sherlock_holms.name = 'S'; // Встановлюємо вручну значення для name
	sherlock_holms.getInfoBook ();
 
	Book green_mile(750, 2.8f, 'G'); // Використовуємо другий конструктор
	green_mile.getInfoBook ();
 
	return 0;
}

Оскільки змінна name має public модифікатор доступу, то ми можемо звертатися до неї окремо. Краще так не робити і для неї теж встановити модифікатор private.


Також конструктор може не приймати параметрів. У такому випадку при створенні об'єкта нічого не треба додатково передавати.


Вказівник this

Завдяки вказівнику this ми можемо точно вказати звідки беруться дані. При роботі з даними всередині одного класу часто необхідно звертатися до полів або методів самого класу. Щоб не виникало конфліктів імен, можна використовувати вказівник «this».


Приклад роботи:

class Some {
private
	int test;

public:
	void set (int test) {
		this->test = test;
	}
};

При використанні вказівника цей код не викличе помилок і все буде оброблено коректно.


Деструктори

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

Приклад створення деструктора:
class Some {
public:
	~Some () {
		cout << "Робота з об'єктом завершена.";
	}
};

Вихідний код

Весь код буде доступний після підписки на проект!

Завдання до уроку

Необхідно оформити передплату на проект, щоб отримати доступ до всіх домашніх завдань

Велике завдання за курсом

Вам необхідно оформити передплату на сайті, щоб мати доступ до всіх великих завдань. У завдання входить методика рішення, а також готовий проект з відповіддю до завдання.
PS: подібні завдання доступні при підписці від 1 місяця

Також варто подивитися

Создание игры на C++ / Создание "Змейки"
Основы программирования
Вивчення C++ від новачка до профі
Игра с дизайном на C++ / Создание C++ WinForms игры
Уроки C++ WinForms / Создание программ на Windows
Уроки Qt Creator | Графический интерфейс на С++
Коментарі
Додати коментар

Поки що коментарів немає