- •Раздел 4. Разработка по Тема 4.1. Проектирование интерфейса с пользователем
- •4.1.1. Типы пользовательских интерфейсов.
- •4.1.2. Пользовательская и программная модели интерфейса.
- •4.1.3. Разработка диалогов.
- •4.1.4. Основные компоненты графических пользовательских интерфейсов.
- •Тема 4.2. Реализация графических пользовательских интерфейсов.
- •4.2.1. Диалоги, управляемые пользователем.
- •4.2.2. Диалоги, управляемые системой.
- •4.2.3. Использование метафор.
- •4.2.4. Технология Drag and Drop.
- •4.2.5. Интеллектуальные элементы.
- •4.3.1. Базовые типы данных.
- •Константы
- •Область действия имен
- •4.3.2. Указатели и адресная арифметика.
- •4.3.3. Составные типы данных. Структуры
- •Битовые поля
- •Определение типов
- •Перечислимые типы
- •4.3.4. Выражения и операции.
- •4.3.5. Управляющие конструкции. Условные операторы
- •Операторы циклов
- •4.4.1. Статические одномерные массивы.
- •4.4.2. Статические многомерные массивы.
- •4.4.3. Динамические массивы.
- •4.4.4. Массивы указателей.
- •4.5.1. Стеки.
- •4.5.2. Очереди.
- •4.5.3. Списки.
- •4.5.4. Бинарные деревья.
- •4.6.1. Объявление классов и экземпляров классов.
- •4.6.2. Инкапсуляция данных и методов.
- •4.6.3. Конструкторы классов.
- •Конструктор по умолчанию
- •Конструктор копирования
- •4.6.4. Деструкторы классов.
- •4.7.1. Разделы в описании класса.
- •4.7.2. Friend-конструкции.
- •4.7.3. Статические члены классов.
- •4.7.4. Использование описателя const в классах.
- •4.8.1. Вложенность классов.
- •4.8.2. Наследование данных и методов.
- •4.8.3. Типы наследования.
- •4.9.1. Полиморфизм раннего связывания.
- •4.9.2. Полиморфизм позднего связывания и виртуальные функции.
- •4.9.3. Абстрактные методы и классы.
- •4.10.1. Функции консольного ввода-вывода.
- •4.10.2. Функции файлового ввода-вывода.
- •4.10.3. Использование библиотеки классов потокового ввода-вывода.
- •4.11.1. Перегрузка операций.
- •4.11.2. Шаблоны функций.
- •4.11.3. Шаблоны классов.
- •4.11.4. Обработка исключений.
- •Тема 4.12. Com-технология.
- •4.12.1. Основные понятия.
- •4.12.2. Типы интерфейсов.
- •Свойства интерфейсов
- •Типы интерфейсов
- •4.12.3. Типы com-объектов.
- •4.12.4. Фабрика классов.
- •Тема 4.13. Построение com-сервера.
- •4.13.1. Язык idl.
- •Содержимое файла idl
- •4.13.2. Определение пользовательского интерфейса.
- •4.13.3. Реализация пользовательского интерфейса.
- •4.13.4. Создание тестового клиента.
- •Тема 4.14. Обзор платформы ms .Net.
- •4.14.1. Общая идея архитектуры .Net.
- •4.14.2. Достоинства и недостатки .Net.
- •4.14.3. Схема трансляции программ в .Net.
- •4.14.4. Язык msil.
- •4.14.5. Объектно-ориентированная модель .Net.
4.3.1. Базовые типы данных.
Стандартные типы данных в C++:
• char — символ;
• int — целое число;
• float — число с плавающей точкой;
• double — число с плавающей точкой двойной точности;
• enum — перечислимый тип задает набор именованных констант целого типа.
Уточняющие описатели типов:
short, long и unsigned
делают возможными, например, следующие описания:
Тип Представление
unsigned char Целое без знака в диапазоне (0-255)
short int Короткое целое
long int Длинное целое
unsigned short int Короткое целое без знака
unsigned int Целое без знака
unsigned long int Длинное целое без знака
Смысл приведенных описаний не изменится, если в них опустить ключевое слово int. Размер памяти, отводимой для хранения переменной стандартного типа, а следовательно, и диапазон значений для большинства типов не определены в языке C++ и зависят от компилятора и конкретного операционного окружения.
При выполнении операций производятся автоматические преобразования стандартных типов, которые зависят от типов операндов и операций. Если какой-нибудь операнд имеет более высокий тип, то к нему преобразуются остальные. Схема выглядит так:
int ->long -> double
Кроме автоматического приведения типов существует явное, задаваемое программистом. В языке С явное преобразование осуществляется с помощью операции приведения типов (cast operation). Например, если определены переменные:
int i;
double a=3.14:
то оператор i=(int)a; приводит тип значения переменной а к типу переменной i. Дробная часть отбрасывается и i получает значение 3.
В языке C++ наряду с этим способом существует другой, более естественный способ записи явного преобразования типов. Например, при объявлении переменных
int i=17;
float a=float(i);
сразу происходит их инициализация и явное приведение типа. Синтаксис создает впечатление, что в языке есть встроенная функция с именем float, однако это не функция, а операция явного приведения типа. Любое другое имя стандартного типа может быть использовано аналогичным способом.
Левая часть оператора присвоения = должна быть адресуемым выражением. Адресуемое выражение lvalue (left value) объединяет:
• численную переменную (numeric variable);
• переменную типа «указатель» (pointer variable);
• прямую ссылку па поле структуры (structure field reference);
• ссылку на поле структуры с помощью указателя (structure field indirection);
• элемент массива (subscripted array element).
Выражения, которые нельзя располагать в левой части оператора присвоения, но можно в правой, иногда описываются термином rvalue (right-hand-side value). Например, если объявлены переменные int i, j=2,k=3;, то оператор i=j+k; является вполне законным, a j+k=i; — нет (illegal), гак как выражение j+k есть выражение типа rvalue.
Переменная с описателем const не может быть левым операндом операции присвоения. Благодаря описателю const значение переменной, один раз определенное, уже не может быть изменено в пределах действия ее имени. Например, описание const float PERM=1.256E6; определяет PERM как вещественную переменную, значение которой изменить не удастся. Попытка присвоить PERM другое значение вызовет ошибку на стадии компиляции. Объявление const size=32767; равносильно const int size=32767;, так как описатель int приписывается по умолчанию.