Дружественные классы.
Если
все компонентные функции (методы) одного
класса являются дружественными для
другого класса, то класс является
дружественным этому другому классу.
Объявление
дружественного класса:
class
X
{…};
class
Y {… friend class X; …};
Все
приватные и защищенные члены класса Y
могут обрабатываться функциями класса
X,
то есть
являются доступными в дружественном
классе.
Дружественный
класс может быть определен позже, нежели
описан как дружественный:
class
X1 {… friend class X2 ;…} ;
class
X2 {…};
Описание объектов
Конкретные
переменные типа «класс» называются
экземплярами
класса, или объектами.
Время
жизни и видимость объектов зависит от
вида и места их описания
и
подчиняется общим правилам С++:
При
создании каждого объекта выделяется
память, достаточная для хранения всех
его полей.
Методы
класса не тиражируются. При выходе
объекта из области действия он
уничтожается.
Доступ
к элементам объекта
аналогичен
доступу к полям структуры. Для этого
используется операция . (точка) при
обращении к элементу через имя объекта
и операция -> при обращении через
указатель, например,
Обратиться
так можно только к элементам со
спецификаторов public.
Получить
или изменить значения элементов со
спецификатором private
можно только через обращение к
соответствующим методам.
Можно
создать константный
объект,
значения
полей которого изменять запрещается.
К
нему должны применяться только константные
методы:
Константный
метод:
•
объявляется
с ключевым словом const
после списка параметров;
• может
вызывать только константные методы;
• может
вызываться для любых (не только
константных) объектов.
Рекомендуется
описывать как константные те методы,
которые предназначены для получения
значений полей.