LibKing » Книги » comp-programming » Бьярн Страустрап - Справочное руководство по C++

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

Тут можно читать онлайн Бьярн Страустрап - Справочное руководство по C++ - бесплатно полную версию книги (целиком). Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте LibKing.Ru (ЛибКинг) или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
libking
  • Название:
    Справочное руководство по C++
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    5/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Ваша оценка:

Бьярн Страустрап - Справочное руководство по C++ краткое содержание

Справочное руководство по C++ - описание и краткое содержание, автор Бьярн Страустрап, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Справочное руководство по C++ - читать онлайн бесплатно полную версию (весь текст целиком)

Справочное руководство по C++ - читать книгу онлайн бесплатно, автор Бьярн Страустрап
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

Файл: Имя описанное вне всех блоков (§R.6.3) и классов (§R.9) имеет область видимости файл и может быть использовано в единице трансляции, в которой оно появляется после момента описания. Имена, описанные с файловой областью видимости, называются глобальными.

Класс: Имя члена класса является локальным в своем классе и оно может быть использовано только в функции-члене этого класса (§R.9.3), или после операции., применяемой к объекту данного класса (§R.5.2.4) или объекту производного класса(§R.10), или после операции -›, применяемой к указателю на объект данного класса (§R.5.2.4) или на объект производного класса, или после операции разрешения:: (§R.5.1), примененной к имени данного или производного класса. Имя, введенное с помощью операции friend (§R.11.4), принадлежит той же области определенности, что и класс, содержащий описание friend. Класс, впервые описанный в операторе return или в типе параметра, принадлежит к глобальной области видимости.

Специальные соглашения действуют на имена, введенные при описании параметров функции (§R.8.2.5) и в описаниях friend (§R.11.4).

Имя может быть скрыто явным описанием того же имени в объемлющем блоке или классе. Скрытое имя члена класса все-таки можно использовать, если оно предваряется именем класса, к которому применена операция:: (§R.4.1, §R.9.4, §R.10). Скрытое имя объекта, функции, типа или элемента перечисления с файловой областью видимости можно использовать, если оно предваряется унарной операцией :: (§R.5.1). В дополнении к этому, имя класса (§R.9.1) может быть скрыто именем объекта, функции или элемента перечисления, имеющего ту же область видимости. Если класс и объект, или функция, или элемент перечисления описаны (в любом порядке) с одинаковым именем в одной области видимости, то имя класса становится скрытым. Имя класса, скрытое в локальной области видимости или в области видимости класса именем объекта, функции или элемента перечисления, все-таки можно использовать, если предварить его подходящей спецификацией class, struct или union (§R.7.1.6). Аналогично, скрытое имя элемента перечисления можно использовать, если предварить его спецификацией типа enum (§R.7.1.6). В §R.10.4 приводится сводка правил области видимости. Моментом описания имени считается момент завершения описателя имени (§R.8), предшествующей части инициализации (если она есть).

Например,

int x = 12;

{ int x = x; }

Здесь второе x инициализируется своим собственным (неопределенным) значением.

Моментом описания элемента перечисления считается момент сразу после появления его идентификатора, например:

enum { x = x };

Здесь элемент перечисления x опять инициализируется своим собственным (неопределенным) значением.

R.3.3 Программа и связывание

Программа состоит из одного или нескольких файлов, связываемых вместе (§R.2). Файл состоит из последовательности описаний.

Имя с файловой областью видимости, которое явно описано как static, является локальным в своей единице трансляции и может использоваться для именования объектов, функций и т.п. в других единицах трансляции. Говорят, что такие имена имеют внутреннее связывание. Имя с файловой областью видимости, которое явно описано со спецификацией inline, является локальным в своей единице трансляции. Имя с файловой областью видимости, которое явно описано со спецификацией const и не описано явно как extern, считается локальным в своей единице трансляции. То же верно для имени класса, которое не использовалось в нелокальных для данной единицы трансляции описаниях объекта, функции или класса, и который не имеет статических членов (§R.9.4), не имеет функций-членов, кроме подстановок (§R.9.3.2). Всякое описание некоторого имени с файловой областью видимости, которое не описано одним из перечисленных способов так, чтобы иметь внутреннее связывание, в многофайловой программе обозначает один и тот же объект (§R.3.7), функцию (§R.8.2.5) или класс (§R.9). Такие имена называются внешними или говорят, что они имеют внешнее связывание. В частности, поскольку нельзя описать имя класса как static, всякое употребление имени некоторого класса с файловой областью видимости, который (класс) использовался для описания объекта или функции с внешним связыванием, или же который имеет статический член или функцию-член, не являющуюся подстановкой, будет обозначать один и тот же класс.

Имена определяемых типов (typedef §R.7.13), элементы перечисления (§R.7.2) или имена шаблонов типа (§R.14) не имеют внешнего связывания.

Статические члены класса (§R.9.4) допускают внешнее связывание.

Функции-члены, не являющиеся подстановкой, допускают внешнее связывание. Функции-члены, являющиеся подстановкой, должны иметь в точности одно определение в программе.

Локальные имена (§R.3.2), явно описанные со спецификацией extern, имеют внешнее связывание, если только они уже не были описаны как static (§R.7.1.1).

Типы, используемые во всех описаниях некоторого внешнего имени, должны совпадать, за исключением использования имен определяемых типов (§R.7.1.3) и указания границ массивов (§R.8.2.4). Должно быть в точности одно определение для каждой функции, объекта, класса и элемента перечисления, используемых в программе. Однако, если функция никогда не вызывается и ее адрес никогда не используется, ее не нужно определять. Аналогично, если имя класса используется только таким образом, что не требуется знать определение класса, то класс не нужно определять.

Область видимости функции может быть только файл или класс.

С помощью спецификации связывания можно добиться связывания с описаниями на другом языке (§R.7.4).

R.3.4 Начало и окончание программы

Программа должна содержать функцию с именем main(). Ей приписывается роль начала программы. Эта функция не является предопределенной для транслятора, она не может быть перегружена, а ее тип зависит от реализации. Предполагается, что любая реализация должна допускать два приведенных ниже определения и что можно добавлять после argv любые параметры. Функция main может определяться так

int main() {/*… */}

или

int main(int argc, char* argv[]) {/*… */}

В последнем определении argc задает число параметров, передаваемых программе окружением, в котором она выполняется. Если argc не равно нулю, параметры должны передаваться как строки, завершающиеся символом '\0', с помощью argv[0] до argv[argc-1], причем argv[0] должно быть именем, под которым программа была запущена, или "". Должно гарантироваться, что argv[argc]==0.

Функция main() не должна вызываться в программе. Связывание main() (§R.3.3) зависит от реализации. Нельзя получать адрес main() и не следует описывать ее как inline или static.

Вызов функции

void exit(int);

описанной в ‹stdlib.h›, завершает программу. Значение параметра передается окружению программы в качестве результата программы.

Читать дальше
Тёмная тема

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать


Бьярн Страустрап читать все книги автора по порядку

Бьярн Страустрап - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




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


Отзывы читателей о книге Справочное руководство по C++, автор: Бьярн Страустрап. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
Большинство книг на сайте опубликовано легально на правах партнёрской программы ЛитРес. Если Ваша книга была опубликована с нарушениями авторских прав, пожалуйста, направьте Вашу жалобу на PGEgaHJlZj0ibWFpbHRvOmFidXNlQGxpYmtpbmcucnUiIHJlbD0ibm9mb2xsb3ciPmFidXNlQGxpYmtpbmcucnU8L2E+ или заполните форму обратной связи.
img img img img img