Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_С++_последная.doc
Скачиваний:
42
Добавлен:
07.05.2019
Размер:
876.54 Кб
Скачать

9.1.6. Чистые виртуальные функции и абстрактные классы

Виртуальная функция, не имеющая определения тела, называется чистой (pure) и объявляется следующим образом:

virtual тип имя(параметры) = 0;

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

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

9.2. Введение в Visual C++

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

Чтобы облегчить работу программиста, практически все современные компиляторы с языка C++ содержат специальные библиотеки классов. Такие библиотеки включают в себя практически весь программный интерфейс Windows и позволяют пользоваться при программировании средствами более высокого уровня, чем обычные вызовы функций. За счет этого значительно упрощается разработка приложений, имеющих сложный интерфейс пользователя, облегчается поддержка технологии OLE и взаимодействие с базами данных.

Подобные средства автоматизированного создания приложений включены в компилятор Microsoft Visual C++ и называются MFC AppWizard. Заполнив несколько диалоговых панелей, можно указать характеристики приложения и получить его тексты, снабженные обширными комментариями. MFC AppWizard позволяет создавать однооконные и многооконные приложения, а также приложения, не имеющие главного окна, – вместо него используется диалоговая панель. Можно также включить поддержку технологии OLE, баз данных, справочной системы.

MFC – это базовый набор (библиотека) классов, написанных на языке С++ и предназначенных для упрощения и ускорения процесса программирования под Windows.

9.3. Основы программирования под Windows

Все Windows – программы начинают выполнение с вызова функции WinMain(). При традиционном методе программирования это нужно делать явно. С использованием библиотеки MFC такая необходимость отпадает, но функция все-таки существует.

Все Windows-программы должны содержать специальную функцию, которая не используется в самой программе, но вызывается самой ОС. Эту функцию обычно называют функцией окна, или процедурой окна. Она вызывается Windows, когда системе необходимо передать сообщение в программу. Именно через нее осуществляется взаимодействие между программой и системой. Функция окна передает сообщение в своих аргументах. Согласно терминологии Windows, функции, вызываемые системой, называются функциями обратного вызова. Таким образом, функция окна является функцией обратного вызова.

В большинстве Windows-программ задача создания функции окна лежит на программисте. При использовании библиотеки MFC такая функция создается автоматически. В этом заключается одно из преимуществ библиотеки.