ЗНАЕТЕ ИНТУИТ, Лекция, Описания и константи
2.1 Описания
Името (идентификаторът) трябва да бъде описано, преди да се използва в програма C ++. Това означава, че трябва да посочите неговия тип, така че преводачът да знае към какъв вид обекти се отнася името. По-долу са дадени няколко примера, които илюстрират разнообразието от описания:
От тези примери можете да видите, че ролята на описанията не се ограничава до обвързване на тип с име. Повечето от тези описания са едновременно определения, т.е. те създават обект, към който се отнася името. За ch, count, name и cvar такъв обект е елемент на паметта с подходящ размер. Този елемент ще се използва като променлива и се казва, че има разпределена памет за него. В действителност такъв обект ще бъде дадената функция. За константата pi обектът ще бъде числото 3.1415926535897932385. За комплекс обектът ще бъде от нов тип. За point обектът е от тип комплекс, така че point става синоним на комплекс. Следните описания вече не са дефиниции:
Това означава, че въведените от тях обекти трябва да бъдат дефинирани някъде другаде в програмата. Тялото на функцията sqrt трябва да бъде посочено в друго описание. Паметта за променливата int error_number трябва да бъде разпределена в резултат на различна дефиниция error_number. Трябва да има някакво друго описание на потребителския тип, от което можете да разберете какъв е този тип. Програмата на C ++ трябва да има само една дефиниция за всяко име, но може да има много дефиниции. Всички описания обаче трябва да съответстват на типа обект, въведен в тях. Следователно фрагментът по-долу съдържа две грешки:
Но следният фрагмент не съдържа нито една грешка (относно използването на extern):
Някои описания показват "стойностите" на обектите, които те дефинират:
За типове, функции и константи „стойността“ остава непроменена; за данни, които не са константи, първоначалната стойност може впоследствие да се промени:
От всички дефиниции само следното не посочва стойност:
Всяко описание, което дава значение, е определение.
2.1.1 Обхват
Описанието определя обхвата на името. Това означава, че името може да се използва само в определена част от текста на програмата. Ако име е описано във функция (обикновено се нарича „локално име“), тогава обхватът на името се простира от точката на описанието до края на блока, в който се появява описанието. Ако името не е намерено в описание на функция или клас (обикновено се нарича „глобално име“), тогава обхватът се простира от точката на декларацията до края на файла, в който се появява описанието. Описанието на името в блока може да скрие описанието в заграждащия блок или глобалното име; тези. името може да бъде предефинирано, за да представлява друг обект в блока. След излизане от блока се възстановява предишната стойност на името (ако има такова). Нека дадем пример: