Программирование >>  Перегруженные имена функций и идентификаторы 

1 ... 36 37 38 [ 39 ] 40 41 42 ... 210


Описатели в списке описателей содержат идентификаторы, подлежащие описанию. Спецификаторы описания могут быть опущены только в определениях внешних функций или в описаниях внешних функций. Список описателей может быть пустым только при описании класса или перечисления, то есть, когда спецификаторыописания - это class спецификатор или enum спецификатор.

Список должен быть внутренне непротиворечив в описываемом ниже смысле.

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

Спецификаторы класса памяти (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 вводится имя для типа.

Спецификаторы Типа

Спецификаторами типов (спецификатор типа) являются:

спецификатор типа:

простое имя типа

с1а88 спецификатор

enum-спецификатор

сложный спецификатор типа

const

Слово const можно добавлять к любому допустимому спецификатору типа. В остальных случаях в описании может быть дано не более одного спецификатора типа. Объект типа const не является lvalue. Если в описании опущен спецификатор типа, он принимается int.



Простое имя типа - это:

char

short

int

long

unsigned

float

double

const

void

Слова long, short и unsigned можно рассматривать как прилагательные. Они могут применяться к типу int; unsigned может также применяться к типам char, short и long.

Сложный спецификатор типа - это:

ключ typedef-имя

ключ идентификатор Ключ:

class

struct

union

enum

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

Например:

class x { ... }; void f(int x)

class x a; ...

Если имя класса или перечисления ранее описано не было, сложный спецификатор типа работает как описание имени.



1 ... 36 37 38 [ 39 ] 40 41 42 ... 210

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика