polevoi_cpp_2013_spring_lecture_03
.pdf
Структура (struct)
•составной пользовательский тип
•определяет набор (почти) произвольных типов
•именованный доступ
16.03.2013 |
11 |
Пример структур
пример:
struct Complex
{
double m_re; double m_im;
};
Complex a = {0};
16.03.2013 |
12 |
Структура (инициализация)
•инициализация списком элементов (аналогично массивам)
пример:
Complex a; //!не инициализирована
Complex b = {0.0};
Complex c = {0.0, 1.0};
16.03.2013 |
13 |
Доступ к членам структур
•. – оператор доступа к члену
•-> – оператор разыменования члена структуры (для указателя на структуру)
Complex a = {0.0, 1.0};
Complex* pA(&a);
a.m_re = 45.0; pA->m_im = -18.8; (*pA).m_re = 41.6;
16.03.2013 |
14 |
Перечисление (enum)
•пользовательский тип
•может иметь собственное имя
•определяет набор определяемых пользователем константных значений
•приводится к целому в выражениях
16.03.2013 |
15 |
Примеры перечислений
enum KeyWord |
enum Status |
{ |
{ |
ASM, |
OFF, |
AUTO, |
ON, |
BREAK |
DISABLE = 255 |
}; |
}; |
KeyWord word(ASM); |
|
16.03.2013 |
16 |
Псевдоним типа (typedef)
•объявление нового псевдонима типа
•короткий синоним
•единое имя выделенного типа
пример:
typedef int Int32;
Int32 counter(0);
16.03.2013 |
17 |
Константность
•замена препроцессора
•строгий контроль типов
•защита данных
•оптимизация
16.03.2013 |
18 |
Подстановка значений
•“ волшебные числа”
•вычисления на этапе компиляции
•подстановка значений (без выделения памяти)
#define MAX_PATH 256
или
const int MAX_PATH(256);
16.03.2013 |
19 |
Константность и защита данных
•инициализация в процессе выполнения
•изменение не предусмотрено
•компилятор пресекает попытки потенциального изменения (проверка присваиваний)
16.03.2013 |
20 |
