|
Программирование >> Перегруженные имена функций и идентификаторы
Описатели в списке описателей содержат идентификаторы, подлежащие описанию. Спецификаторы описания могут быть опущены только в определениях внешних функций или в описаниях внешних функций. Список описателей может быть пустым только при описании класса или перечисления, то есть, когда спецификаторыописания - это 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; ... Если имя класса или перечисления ранее описано не было, сложный спецификатор типа работает как описание имени.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |