суббота, 5 декабря 2009 г.

6.6. Область действия класс и доступ к элементам класса

Данные-элементы класса (переменные, объявленные в определении клас­са) и функции-элементы (функции, объявленные в определении класса) имеют областью действия класс. Функции, не являющиеся элементом класса, имеют областью действия файл.
При области действия класс элементы класса непосредственно доступны всем функциям-элементам этого класса и на них можно ссылаться просто по имени. Вне области действия класс к элементам класса можно обращаться либо через имя объекта, либо ссылкой на объект, либо с помощью указателя на объект.
Функции-элементы класса можно перегружать, но только с помощью других функций-элементов класса. Для перегрузки функции-элемента просто обеспечьте в определении класса прототип для каждой версии перегруженной функции и снабдите каждую версию функции отдельным описанием.
Попытка перегрузить функцию-элемент класса с помощью функции не из области
действия этого класса.
Функции-элементы имеют внутри класса область действия функцию: переменные, определенные в функции-элементе, известны только этой функ­ции. Если функция-элемент определяет переменную с тем же именем, что и переменная в области действия класс, последняя делается невидимой в области действия функция. Такая скрытая переменная может быть доступна посредством операции разрешения области действия с предшествующим этой операции именем класса. Невидимые глобальные переменные могут быть до­ступны с помощью унарной операции разрешения области действия (смотри главу 3).
Операции, использованные для доступа к элементам класса, аналогичны операциям, используемым для доступа к элементам структуры. Операция выбора элемента точка (.) комбинируется для доступа к элементам объекта с именем объекта или со ссылкой на объект. Операция выбора элемента стрелка (->) комбинируется для доступа к элементам объекта с указателем на объект.
Программа на рис. 6.4 использует простой класс, названный Count, с открытым элементом данных х типа int и открытой функцией-элементом print, чтобы проиллюстрировать доступ к элементам класса с помощью опе­раций выбора элемента. Программа создает три экземпляра переменных типа Countcounter, counterRef (ссылка на объект типа Count) и counterPtr (указатель на объект типа Count). Переменная counterRef объявлена, чтобы
ссылаться на counter, переменная counterPtr объявлена, чтобы указывать на counter. Важно отметить, что здесь элемент данных х сделан открытым просто для того, чтобы продемонстрировать способы доступа к открытым элементам. Как мы уже установили, данные обычно делаются закрытыми (private), чему мы и будем следовать в дальнейшем.
// FIG6_4.CPP
// Демонстрация операций доступа к элементам класса . и -> //
// ПРЕДУПРЕЖДЕНИЕ: В ПОСЛЕДУЮЩИХ ПРИМЕРАХ МЫ // БУДЕМ ИЗБЕГАЕМ ОТКРЫТЫХ ДАННЫХ! iinclude ciostream.h>

« endl;
// Простой класс Count class Count { public: int x ;
void print() { cout
};

main ( ) {
Count counter,
*counterPtr = scounter ScounterRef = counter;
// создается объект counter // указатель на counter // ссылка на counter

cout « "Присваивание x значения 7 и печать по имени объекта: "; counter.х =7;    // присваивание 7 элементу данных х
counter.print();            // вызов функции-элемента для печати
cout << "Присваивание х значения 8 и печать по ссылке: "; counterRef.x =8;       // присваивание 8 элементу данных х
counterRef.print();        // вызов функции-элемента для печати
cout << "Присваивание х значения 10 и печать по указателю:

counterPtr->x = 10; counterPtr->print ();
return 0; }
// присваивание 10 элементу данных х // вызов функции-элемента для печати

Приев айв ание х значения 7 и печать по имени объекта: 7 Присваивание х значения 8 и печать по ссылке: 8 Присваивание х значения 10 и печать по указателю: 10
Рис. 6.4. Доступ к данным-элементам объекта и функциям-элементам посредством имени объекта, ссылки и указателя на объект

Комментариев нет:

Отправить комментарий