Фролов А.В., Фролов Г.В. Библиотека системного программиста Том 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 Изменение порядка обработки сообщений Стандартные команд ные сообщения Простейший графический редактор Создание нового документа Сохранение и восстановление документа на диске Для забывчивых пользователей Простейший текстовый редактор Заключение Литература
Ссылки В языке Си++ вы можете определить ссылку на объект – переменную или объект класса. Ссылка содержит адрес объекта, но вы можете использовать ее, как будто она представляет сам объект. Для объявления ссылки используется оператор amp;.
В следующей программе мы определили переменную iVar типа int и ссылку iReferenceVar на нее. Затем мы отображаем и изменяем значение переменной iVar используя ее имя и ссылку.
// Включаемый файл для потокового ввода/вывода
#include lt;iostream.hgt;
void main(void) {
// Определяем переменную iVar
int iVar = 10;
// Определяем ссылку iReferenceVar на переменную iVar
intamp; iReferenceVar = iVar;
// Отображаем значение переменной и ссылки
cout lt;lt; "iVar = " lt;lt; iVar lt;lt; ";
iReferenceVar = " lt;lt; iReferenceVar lt;lt; '\n';
// Изменяем значение переменной iVar пользуясь ссылкой
iReferenceVar = 20;
// Отображаем значение переменной и ссылки
cout lt;lt; "iVar = " lt;lt; iVar lt;lt; ";
iReferenceVar = " lt;lt; iReferenceVar lt;lt; '\n';
}
Вы можете использовать ссылки для передачи параметров функциям. При этом фактически вы передаете функции указатель на объект, представленный ссылкой. Внутри функции вы можете работать с ссылкой как с самим объектом, а не как с указателем.
Функция может не только принимать ссылки в качестве своих параметров, она также может возвращать ссылку. Такую функцию можно привести в левой части оператора присваивания.