Skip to content

Полиморфизм, понятие абстрактного класса. Дружественные связи.

Pandas edited this page Jun 16, 2017 · 1 revision

Взаимодействие объектов – один объект даёт доступ к всем своим членам другому, но не наоборот. Используется, когда один класс должен отвечать за всю работу другого класса.

class B; //форвард-объявление
class A {};
class B
{
	friend class A;
private:
	int abs;
public:
	int getabs();
};

Все члены класса А имеют доступ ко всем членам класса Б. Можно ограничить доступ: чтобы только определенный метод был другом класса Б. Этот вариант более правилен – при изменении класса Б в А нужно изменять только один метод.

class B;
class A { int f(); };
class B
{
	friend int A::f();
};

Дружба – не наследуется и не транзитивна. Если от класса Б породить другой класс, то для него класс А уже не будет другом. Если класс А дружит с классом С, то класс Б не дружит с С.

Clone this wiki locally