Справочное руководство по C++


Спецификаторы класса памяти


Спецификаторы "класса памяти" (sc-спецификатор) это:

sc-спецификатор: auto static extern register

Описания, использующие спецификаторы auto, static и register также служат определениями тем, что они вызывают резервирование соответствующего объема памяти. Если описание extern не является определением (), то где-то еще должно быть определение для данных идентификаторов.

Описание register лучше всего представить как описание auto (автоматический) с подсказкой компилятору, что описанные переменные усиленно используются. Подсказка может быть проигнорирована. К ним не может применяться операция получения адреса .

Спецификаторы auto или register могут применяться только к именам, описанным в блоке, или к формальным параметрам. Внутри блока не может быть описаний ни статических функций, ни статических формальных параметров.

В описании может быть задан максимум один sc_спецификатор. Если в описании отсутсвует sc_спецификатор, то класс памяти принимается автоматическим внутри функции и статическим вне. Исключение: функции не могут быть автоматическими.

Спецификаторы static и extern могут использоваться только для имен объектов и функций.

Некоторые спецификаторы могут использоваться только в описаниях функций:

фнк-спецификатор: overload inline virtual

Спецификатор перегрузки overload делает возможным использование одного имени для обозначения нескольких функций; см. .

Спецификатор inline является только подсказкой компилятору, не влияет на смысл программы и может быть проигнорирован. Он используется, чтобы указать на то, что при вызове функции inline- подстановка тела функции предпочтительнее обычной реализации вызова функции. Функция ( и ), определенная внутри описания класса, является inline по умолчанию.

Спецификатор virtual может использоваться только в описаниях членов класса; см. .

Спецификатор friend используется для отмены правил скрытия имени для членов класса и может использоваться только внутри описаний классов; см. .

С помощью спецификатора typedef вводится имя для типа; см. .



Содержание раздела