Определение и объявление объекта
Перед тем, как использовать информационный объект, его нужно описать (определить или объявить):
• Определения связывают информационные объекты программы с их идентификаторами, резервируют для объектов память и устанавливают их атрибуты.
• Объявления делают идентификаторы информационных объектов известными компилятору.
• В программе определение информационного объекта всегда одно, объявлений может быть несколько.
Описание является определением, если:
• содержит инициализатор;
• полностью описывает функцию (включает тело функции);
• описывает объединение или структуру (включая компоненты);
• описывает класс (включая его компоненты);
Описание является объявлением, если:
• описывает прототип функции;
• содержит спецификатор extern;
• описывает статический компонент класса;
• описывает имя класса;
• описывает имя типа, вводимого пользователем (typedef).
Примеры описаний программных объектов
char[1] c; // определение символьной переменной
int a; // определение целочисленной переменной
float x, y; // определение вещественных переменных
char* str = "aaaa"; // определение указателя и инициализация его адресом
//строкового литерала
struct complex { float re, im; }; // определение структурного типа (структуры)
struct complex1 { int re, im; }; // определение структурного типа (структуры)
complex1 var; //и переменной этого типа
extern complex funt(complex); // объявление функции, которая принимает
// в качестве аргумента и возвращает структуру
typedef complex point; // объявление типа point как синонима типа complex
extern int error_number; // объявление переменной типа int
int extern c; // верное!!! объявление переменной типа int
static int a; // определение статической переменной типа int
int static b; // верное!!! определение статической переменной типа int
Но аналогичная запись в классе (если static int а является компонентом класса) только объявляет переменную а как статический компонент класса.
float real(complex* p) { return p->re; }; // определение функции
const double pi = 3.1415926535897932385; // определение и инициализация переменной
double const pi1= 3.141592; // верное!!! определение и инициализация переменной
struct user; // объявление структурного типа user
template<class T>
abs(T x) { return х>0? -x: x; } // определение шаблона семейства функций
enum beer { Carlsberg, Tuborg, Thor }; // определение перечислимого типа beer и
//именованных констант
enum color {red, green=5, blue, black, white}; // определение перечислимого типа color и
//именованных констант
Определение и инициализация переменных целых типов
int k, ix, iy=1, iz; //определение и инициализация переменных
int i = 0x abcd, j= 0 4567, k (1); // 0x abcd – значение в 16-ой с/с; 0 4567 – в 8-ичной с/с
unsigned uk; // эквивалентно записи unsigned int uk;
short shk, shl, shm = 4; // эквивалентно записи short int shk, shl, shm=4;
unsigned short ushk; //в идентификаторе переменной как бы «кодируем» ее тип
long lk; // эквивалентно записи long int lk;
unsigned long ulk (12345); //определение и инициализация переменной
int iarray[10]; //определение массива из 10 значений элементов
// iarray[0] - iarray[9] типа int
При обработке оператора инициализации переменной компилятор выделяет ей память в соответствии с типом и инициализирует указанным значением.
Определение и инициализация переменных вещественных типов
float x = 4.7; //или float x (4.7);
double y = 3.141592, z = 0.6E-02;
float fx (3);
double dy (3.141592);
Определение и инициализация переменных булевского типа
bool b(true); // хотя компилятор не выдает ошибку и при инициализации bool b(1);
bool b1 = false;
bool b2 = bool (-25); //b2 получит значение true
Пример использования переменных булевского типа:
int main() { bool b = false; cout << “b = ” << b << endl; //0 return 0; } | int main() { bool b = false; cout << “b = ”; if (b) cout << ”true”; else cout << ”false”; cout << endl; return 0; } |