Фролов А.В., Фролов Г.В. Библиотека системного программиста Том 24 Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT Введение Microsoft Visual C++ Microsoft Visual C++ версия 4.0 Следующие версии Microsoft Visual C++ Как связаться с авторами Благодарности 1. Немного о C++ Ввод/вывод Константы Ссылки Распределение памяти Операторы new и delete Перегрузка имен функций Задание параметров функции по умолчанию Встраивание Классы Ключевое слово this Разграничение доступа к элементам класса Методы, входящие в класс Конструкторы и деструкторы класса Методы, не изменяющие объекты класса Статические методы Общие члены объектов класса Наследование Единичное наследование Множественное наследование Разграничение доступа к элементам базового класса Переопределение методов базового класса Виртуальные методы Абстрактные классы Структуры Шаблоны Шаблоны в MFC Перегрузка операторов Обработка исключительных ситуаций Операторы try, throw и catch Универсальный обработчик исключений Тип исключения 2. Введение в MFC Классы библиотеки MFC Самый базовый класс MFC (класс CObject) Основа структуры приложения (класс CCmdTarget) Исключения (класс CException) Массивы, списки и словари Файловая система (класс CFile) Контекст отображения (класс CDC) Объекты графического интерфейса (класс CGdiObject) Меню (класс CMenu) Базы данных (классы для работы с базами данных) Синхронизация задач приложения (класс CSyncObject) Сокеты (классы CAsyncSocket и CSocket) Классы, не имеющие базового класса Простые классы Архивный класс (класс CArchive) Информация о классе объекта (структура CRuntimeClass) Отладка приложения (классы CDumpContext, CMemoryState) Печать документа (класс CPrintInfo) Первое приложение MFC Окно Project Workspace Средства ClassView Добавление к классу нового метода Добавление к классу нового элемента данных Просмотр дерева наследования классов Редактирование методов класса Редактирование элементов данных класса Приложение с единственным окном Обработка сообщений Оконные сообщения Сообщения от органов управления Командные сообщения Таблица сообщений Приложение MFMenu Долгий путь сообщения Диалоговая панель Приложение с модальной диалоговой панелью Приложение с немодальной диалоговой панелью 3. Некоторые классы MFC Класс CObject – основной класс MFC Конструкторы класса Оператор присваивания Диагностика Сохранение и восстановление состояния объекта Информация о классе Класс CPoint – точка на плоскости Класс CSize – относительные координаты Класс CString – текстовые строки Конструктор класса Коллекции Массивы – шаблон CArray Списки – шаблон CList Словари – шаблон CMap Класс CTime – дата и время Файловая система – класс CFile Открытие и создание файлов Идентификатор открытого файла Закрытие файлов Чтение и запись файлов Метод Flush Операции с файлами Блокировка Позиционирование Характеристики открытого файла Файловая система – классы CMemFile и CStdioFile Модификация класса CMemFile Файловая система – класс CStdioFile Приложение TestFile Исключения – класс CException Класс CException Класс CMemoryException Класс CFileException Класс CArchiveException Класс CNotSupportedException Класс CResourceException Класс CUserException Запись и восстановление объектов Запись в архивный файл Чтение из архивного файла Многозадачные приложения 4. Приложение с главной диалоговой панелью Создание приложения средствами MFC AppWizard Приложение Dialog Имена, используемые MFC Ресурсы приложения Исходные тексты приложения Средства ClassWizard Создание нового класса Включение в класс новых методов Включение в класс новых элементов данных Просмотр характеристик класса 5. Однооконный интерфейс Модель “документ – окно просмотра ” Процедура создания однооконного приложения Приложение Single Ресурсы приложения Классы приложения Обработка командных сообщений Порядок обработки сообщений Командные сообщения и приложение Single Изменение порядка обработки сообщений Стандартные команд ные сообщения Простейший графический редактор Создание нового документа Сохранение и восстановление документа на диске Для забывчивых пользователей Простейший текстовый редактор Заключение Литература
Разграничение доступа к элементам базового класса Мы уже рассказывали, что можно управлять доступом к элементам класса, указывая спецификаторы доступа для элементов класса. Элементы класса, объявленные с спецификаторами protected и private доступны только из методов самого класса. Элементы с спецификаторами public доступны не только из методов класса, но и извне.
При создании порожденного класса встает вопрос о доступе к элементам базового класса. Оказывается, когда вы наследуете класс из базового класса, вы можете управлять разграничением доступа к элементам базового класса. При этом имеет значение то, как объявлены элементы базового класса и какой спецификатор доступа указан для базового класса.
По следующей таблице вы можете определить как будут доступны элементы базового класса в зависимости от спецификатора доступа базового класса и спецификаторов доступа элементов базового класса.
Спецификатор доступа базового класса Спецификатор доступа элемента базового класса public protected private public Доступны как public Доступны как protected Доступны как private protected Доступны как protected Доступны как protected Доступны как private private Недоступны Недоступны Недоступны