8.1 Спецификаторы Класса Памяти
8.1 Спецификаторы Класса Памяти
Спецификаторы – это:
спецификатор_класса_памяти: auto static extern register
Описания, использующие спецификаторы auto, static и register также служат определениями тем, что они вызывают рзервирование соответствующего объема памяти. Если описание extern не является определением (#4.2), то где-то еще должно быть определение для данных идентификаторов.
Описание register лучше всего представить как описание auto (автоматический) с подсказкой компилятору, что описанные переменные усиленно используются. Подсказка может быть проинорирована. К ним не может применяться операция получения ареса amp;.
Спецификаторы auto или register могут применяться только к именам, описанным в блоке, или к формальным параметрам. Внутри блока не может быть описаний ни статических функций, ни статических формальных параметров.
В описании может быть задан максимум один sc_спецификтор. Если в описании отсутсвует спецификатор_класса_памяти, то класс памяти принимается автоматическим внутри функции и статическим вне. Исключение: функции не могут быть автоматческими.
Спецификаторы static и extern могут использоваться толко для имен объектов и функций.
Некоторые спецификаторы могут использоваться только в описаниях функций:
спецификатор_функции: overload inline virtual
Спецификатор перегрузки overload делает возможным ипользование одного имени для обозначения нескольких функций, см. #8.9.
Спецификатор inline является только подсказкой компилтору, не влияет на смысл программы и может быть проигнорирван. Он используется, чтобы указать на то, что при вызове функции inline-подстановка тела функции предпочтительнее обычной реализацци вызова функции. Функция (#8.5.2 и #8.5.10), определенная внутри описания класса, является inline по умолчанию.
Спецификатор virtual может использоваться только в опсаниях членов класса, см. #8.5.4.
Спецификатор friend используется для отмены правил сорытия имени для членов класса и может использоваться только внутри описаний классов, см. #8.5.9.
С помощью спецификатора typedef вводится имя для типа, см. #8.8.