- •Структура приложения
- •Терминология объектно-ориентированного программирования
- •Объявление класса
- •Производные типы
- •Массивы
- •Пример:
- •Выделение памяти под массив
- •Пример:
- •Ссылки на объект
- •Пример:
- •Выделение памяти под структуру
- •Доступ к элементам структуры
- •Пример:
- •Пример:
- •Функции
- •Функции с переменным числом параметров
- •Пример:
- •Пример:
- •Операторы объявления
- •Операторы управления исключениями
- •Объявления
Производные типы
Производные типы можно условно подразделить на две группы типов.
-
Непосредственно производные типы (directly derived types). Эти типы являются производными от некоторых существующих типов, реализуя типы указателей, ссылки, функции преобразования типов. Группу непосредственно производных типов образуют:
-
массивы (Arrays of Variables or Objects);
-
указатели (Pointers of a Given Type);
-
ссылки (References to Objects);
-
перечисления (Enumiration);
-
указатели на члены класса (Pointers to Class Members).
-
Составные производные типы (composed derivative types) образуют:
-
классы (Classes);
-
структуры (Structures);
-
объединения (Unions).
Массивы
Массив переменных или объектов состоит из определенного числа однотипных данных, называемых элементами массива. Все элементы массива нумеруются последовательно начиная с нуля.
Размещение элементов массива в памяти выполняется последовательно.
Имя массива определяет адрес первого элемента массива. (Имя массива нельзя указывать в левой части оператора присваивания.)
Объявление массива может иметь следующее формальное описание:
// Объявление одномерного массива тип имя_массива[размерность_N]; // Объявление одномерного массива с одновременной инициализацией тип имя_массива[размерность_N]={значениеО, значение1,..., значение_N}; // Объявление безразмерного массива с одновременной инициализацией тип имя_массива[]={значениеО, значение1,..., значение_N}; тип имя_массива[размерность_N]={значениеО, значение1,..., значение_N}; // Объявление многомерного массива тип имя_массива[размерность_1N]... [размерность_МN]; // Объявление многомерного массива с одновременной инициализацией тип имя_массива[размерность_1М]... [размерность_М] = { {значениеО, значение1, ..., значение_М}, ... {значениеОN, значение1N,..., значение_NМ}}; |
Пример:
int ArrayOfIntl[5]; // Массив из пяти переменных типа int
cClass cObj[5]; // Массив из пяти объектов типа cClass
static float ArrayOfFl[5]; // Статический массив из пяти переменных типа float char ArrayOfChl[3]={'A','B','C'}; // Объявление и инициализация
// символьного массива
char ArrayOfCh2[]={"Text for array. \n"};
int ArrayOfInt2[2][3]={{12,10,3}, {15,4,8}};// Инициализация двумерного массива
Размерность массива может указываться любым выражением целого типа. Если размерность массива не указана, то компилятор использует для определения размерности список значений инициализации массива. Такой способ объявления массива наиболее удобен для строковых значений.
Отметим, что если не указаны ни размерность массива, ни список значений инициализации, то будет создан массив нулевой длины.
При объявлении многомерных массивов синтаксис языка разрешает не указывать только самую левую размерность, получая ее значение из списка значений инициализации.
Список значений инициализации для многомерных массивов можно указывать как в единых фигурных скобках, так и в общих фигурных скобках, включающих через запятую списки по каждому левому индексу в отдельных фигурных скобках. При использовании общих фигурных скобок сначала следует указывать значения для неизменяемого самого левого индекса.
Инициализацию массива можно производить следующим образом:
-
указав во время объявления массива в фигурных скобках значения инииализации (начиная с нулевого элемента и первого столбца);
-
присвоив значения элементам массива во время выполнения программы;
-
объявив массив как глобальный или статический , инициализируемый по умолчанию (для числовых значений выполняется инициализация нулями, а для указателей - значением null).
Компилятор Visual C++ не позволяет задавать больше значений инициализации, указываемых в фигурных скобках, чем объявляемая размерность массива. Однако при задании меньшего числа значений инициализации оставшиеся значения автоматически инициализируются нулями.