Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конструкторы и деструкторы.doc
Скачиваний:
24
Добавлен:
18.04.2015
Размер:
184.83 Кб
Скачать

Void main ( )

{ cot::count(500); …

//изменение статического компонента до объявления объектов

}

  1. Указатели на компоненты класса

Определение указателя на компонентные данные класса:

Тип данных(имя класса ::*имя указателя)

В определение можно включить и инициализацию

& имя класса :: имя компонента

int ( stroka::*plen)=&stroka::len;

// - не верно, т.к. lenимеет статус private

При инициализации надо использовать общедоступные компоненты.

После объявления объекта к его компонентам следующий формат обращения через указатель:

Имяобъекта.* указатель на компонент данных;

Если определен указатель на объект формат обращения:

Указатель на объект-> *указатель на компонент данных ;

Определение указателей на компонентные функции

Тип возвращаемого результата ( имя класса ::*имя указателя на метод)

( спецификация параметров функции);

void (book::*fprt)(void) = & book::show_book ;

//определение указателя на компонентные функции классаbookи

// инициализация указателя компонентной функцией show_book

И форматы обращения к методам через указатели:

Имя объекта.*указатель на метод(параметры);

Указатель на объект-> *указатель на метод ( параметры);

Пример:

book A (“C и C++”, “Б.И.Березин, 40.0); // определен объект

void (book::*fprt)(void) = & book::show_book ;

(A.*fptr) ( ) // выведет на печать значения объекта

Если в определении класса было бы несколько идентичных функций указатель fptrможно “настроить” на другие функции

Компонентные функции

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

При внешнем определении в теле класса располагается прототип функции:

<Тип> <имя функции >(спецификация формальных параметров);

Вне тела класса компонентная функция определяется следующим образом:

<Тип ><имя класса>::<имя функции>(спецификация формальных

параметров)

{ тело функции };

Функция компонент класса имеет туже область видимости, что и класс.

Пример: Работа с графической библиотекой

При объявлении методов класса использовались (инкапсулировались) графические функции, прототипы которых находятся в заголовочном файле graphics.h

Все эти функции предоставляют возможности управления графическим экраном.

Стандартное состояние ПК – соответствует работе экрана в текстовом режиме (25 строк по 80 символов в строке).

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

Для управления техническими средствами ПК имеются соответствующие программы, называемые драйверами.

Графический драйвер управляет дисплейным адаптером в графическом режиме.

Графические возможности адаптера определяются разрешением экрана (количеством точек экрана) и количеством цветов, которыми может светиться каждая точка.

Наиболее распространенные дисплейные адаптеры (CGA - Color Graphics Adapter, EGA – Enhanced (усиленный) Graphics Adapter, VGA – Video Graphics Array (графический видеомассив), SVGA и т. д. ) могут иметь несколько графических режимов работы. Для управления современными графическими адаптерами мы используем драйвер EGAVGA.BGI

Экран представляет собой совокупность светящихся точек - пикселей. Количество точек определяется монитором и режимом драйвера для работы с ним. Положение пикселя определяется его координатами по отношению к точке с координатами 0, 0 – верхнему левому углу экрана.

Для инициализации графического режима адаптера используется вызов функции: