#20 – Конструкторы, деструкторы и указатель this

#20 – Конструкторы, деструкторы и указатель this

В каждом классе вы можете описывать конструкторы, деструкторы и указатель this. О том что это такое, зачем оно нужно и как с ним можно работать – будет рассказано в видео.

Видеоурок

Конструктор класса очень удобен и по своему виду схож с обыкновенными функциями. За счёт конструктора мы можем установить значения для объекта сразу при его создании.


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

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++ WinForms / Создание программ на Windows
8 уроков
Создание игры на C++ / Создание "Змейки"
3 урока
Уроки Qt Creator | Графический интерфейс на С++
13 уроков
Основы программирования
12 уроков
Комментарии
Добавить комментарий

Пока комментариев нет