Pointer_to_object).class_id::member_function_id(arguments) // для функций

Pointer_to_object).class_id::member_id // для данных

Pointer_to_object).member_function_id(arguments) // для функций

Pointer_to_object).member_id // для данных

Object_id.class_id::member_function_id(arguments) // для функций

Object_id.class_id::member_id // для данных

Object_id.member_function_id(arguments) // для функций

Object_id.member_id // для данных

Обращение к компонентам объектов

Пример

CMatrix::~CMatrix() {

for(size_t i = 0; i < __nrows; i++) delete[] __thematrix[i];

delete[] __thematrix;

}

Работа с объектом – это, прежде всего, вызов компонентных функций, объявленных в его классе (обращение к компонентным функциям). В общем случае такой вызов называют передачей объекту сообщения. Те действия, которые выполняет функция, называются реакцией объекта на сообщение. Реакцией может быть отправка сообщения другому объекту, изменение состояния объекта, возврат текущего состояния объекта и др. В принципе, возможно и обращение к данным объекта, однако это считается исключением ввиду ослабления уровня инкапсуляции; все данные, как правило, делают недоступными и обращение к ним стремятся реализовать через соответствующие компонентные функции.

Обратиться к компоненту объекта можно несколькими способами: через уточнение имени компонента, путем косвенного выбора, через указатель на компонент.

Формат доступа к компоненту через его сокращенное квалифицированное имя (уточнение имени) следующий:

где object_id – имя объекта, а member_id (member_function_id) – имя компонента (arguments – список аргументов компонентной функции).

Доступ через полное квалифицированное имя компонента строится аналогично, но включает имя класса class_id и имеет формат:

Следует отметить, что такой формат используется достаточно редко, в частности, в случае множественного наследования, когда есть неоднозначность при обращении к компонентам без явной квалификации их имени (более подробно см. ниже).

Косвенный выбор компонента становится возможным после определения указателя на объект. Записывается косвенный выбор через операцию –> и имеет формат вида:

pointer_to_object–>member_id // для данных

pointer_to_object–>member_function_id(arguments) // для функций

где pointer_to_object – указатель на объект.

Допускаются и обращения с разыменованием указателя:

а также с полным квалифицированным именем:

pointer_to_object–>class_id::member_id // для данных

pointer_to_object–>class_id::member_function_id(arguments) // для функций

В приведенном ниже фрагменте кода используются оба описанных способа обращения к компонентам (по комментариям можно легко понять сущность каждого оператора).

CBitSequence seq; // создание двоичной последовательности