#22 – Дружественные классы

#22 – Дружественные классы

По аналогии с дружественными функциями в языке C++ существуют также дружественные классы. За урок вы научитесь создавать и работать с такими классами на практике.

Видеоурок

Дружественные классы по своей работе схожи с дружественными функциями. Единственное отличие заключается в объединение не просто функций, а целых классов.


Благодаря дружественному свойству мы можем указать несколько классов, что будут связаны между собой. Это позволит брать данные через объект сразу из нескольких классов.


За счёт этого мы может точно описать логику для различных персонажей в игре или для окон в приложении. Все они могут быть записаны в разных классах, но при этом каждый сможет иметь доступ друг к другу.


Пример создания дружественного класса:

class Auto;
class Motorcycle {
	friend class Auto;
private: 
	bool isStillWorking = true;
};

class Auto {
public:
	void CrashDTP(Auto &moto) {
		moto.isStillWorking = false;
		cout << "Motorcycle is currently not working!";
	}
};

Из примера видно, что для дружественных классов используется схожая структура что для дружественных функций.


Перед объявление класса Motorcycle указывается существование класса Auto: class Auto. Далее мы делаем класс Auto дружественным и для этого используем ключевое слово friend.

Исходный код

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

Задание к уроку

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

Большое задание по курсу

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

Также стоит посмотреть

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

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