Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Стандартный модуль GRAPH

Указатели на элементы классов

К элементам классов можно обращаться с помощью указателей. Для этого определены операции.* и ->*. Указатели на поля и методы класса определяются по-разному. Формат указателя на метод класса:

возвр_тип (имя_класса::*имя_указателя) (параметры);

Например, описание указателя на методы класса monstr

int get_health() {return health;}

int get_ammo() {return ammo;}

(а также на другие методы этого класса с такой же сигнатурой) будет иметь вид:

int (monstr:: *pget)();

Такой указатель можно задавать в качестве параметра функции. Это дает возможность передавать в функцию имя метода:

void fun(int (monstr:: *pget)()){

(*this.*pget)(); // Вызов функции через операцию.*

Ниже перечислены правила использования указателей на методы классов.

· Указателю на метод можно присваивать только адреса методов, имеющих соответствующий заголовок.

· Нельзя определить указатель на статический метод класса.

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

Как и указатели на обычные функции, указатели на методы используются в том случае, когда возникает необходимость вызвать метод, имя которого неизвестно. Однако в отличие указателя на переменную или обычную функцию, указатель на метод не ссылается на определенный адрес памяти. Он больше похож на индекс в массиве, поскольку задает смещение. Конкретный адрес в памяти получается путем сочетания указателя на метод с указателем на определенный объект.

Методы, вызываемые через указатели, могут быть виртуальными. При этом вызывается метод, соответствующий типу объекта, к которому применялся указатель.

Формат указателя на поле класса:

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

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

&имя_класса::*имя_поля: // Поле должно быть public

Если бы поле health было объявлено как public, определение указателя на него имело бы вид:

int (monstr::*phealth) = &monstr::health;

cout «Vasia.*phealth; // Обращение через операцию.*

cout «p->*phealth; // Обращение через операцию ->*

Обратите внимание на то, что указатели на поля классов не являются обычными указателями — ведь при присваивании им значений они не ссылаются на конкретный адрес памяти, поскольку память выделяется не под классы, а под объекты классов.

 

Прежде чем познакомиться с этим модулем, нужно знать, что мониторы в компьютерной системе работают в двух режимах: текстовом и графическом. В чем их разница?

Текстовый режим используется для вывода на экран текстовой и числовой информации. При этом экран монитора разбивается на 25 строк и 80 столбцов, пересечение которых образует ячейки. В каждую ячейку помещается только один символ: или буква, или цифра, или знак препинания и т.д.

Графический режим используется как для вывода на экран текстовой и числовой информации, так и для построения различных изображений. При этом экран монитора делится на множество пикселей, каждый из которых намного мельче ячейки текстового режима. И если при работе в текстовом режиме величина и форма всех символов более-менее одинаковая, то в графическом – мы можем печатать символы разной формы и размеров. Преимущество графического режима очевидно. У него лишь один недостаток: он требует от компьютера больших усилий, поэтому на маломощных компьютерах работает очень медленно.

Текстовый режим в Паскале используется по умолчанию.

Все программы, написанные нами ранее выполнялись в текстовом режиме.

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

Для этого сначала мы вызываем стандартный модуль GRAPH, т.е. первой строкой программы пишем USES Graph. Но этого недостаточно для переключения в графический режим. Чтобы переключиться необходимо обратиться к стандартной процедуре InitGraph, что в переводе означает «инициализация графического режима». Для переключения из графического режима в текстовый служит стандартная процедура CloseGraph. При чем не надо забывать, что при переключении режимов все содержимое в окне вывода результатов стирается.

Задача:

Вывести на экран текст «Работаем в текстовом режиме», затем переключиться в графический режим и нарисовать окружность, затем отключить графический режим и вывести на экран текст «Мы снова в текстовом режиме».

Программа:

Uses graph;

Var device, mode:integer;

<== предыдущая лекция | следующая лекция ==>
Перегрузка операции присваивания | Процедуры графического режима и их параметры
Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 420; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.