Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_ekzamen_CPP.doc
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
311.81 Кб
Скачать
  1. Встроенные функции.

Функция называется встроенной, если компилятор генерирует не вызов этой функции, а встраивает её код в тело программы. Для определения встроенной функции используется ключевое слово inline, которое записывается перед именем функции или типом возвращаемого функцией значения.

Пример:

# include <stdio.h>

inline double cube (double x) {return (x*x*x);}

void main ()

{double x = 1,1;

printf (“%lf”, cube (x));

}

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

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

  1. Определение пространства имён.

Пространство имён определяет область видимости имён объектов, которые не входят ни в один блок. Пространство имён не быть определено внутри блока. Синтаксис выглядит следующим образом:

Namespace имя_пространства_имён

{

…// область описания имён

}

Пример:

Namespace Mynames

{

Int m;

Int add (int a, int b) {return (a + b);}

}

Пространство имён открыто, т.е. одно и то же пространство имён можно расширять в разных исходных файлах. Пример: в другом исходном файле можно написать другие элементы пространства: ещё одну переменную и ещё одну функцию

Namespace Mynames

{

Int m;

Int sub (int a, int b) {return (a - b);}

}

Пространства имён могут вкладываться друг в друга. Пример:

Namespace Publicnames

Int k;

Namespace Mynames

{

Int m;

Int sub (int a, int b) {return (a - b);}

}

Также могут вкладываться несколько пространств имён.

По умолчанию существует анонимное пространство имён, которое доступно во всех исходных файлах и которое не нужно объявлять. Это пространство называется глобальным. Можно отметить, что все пространства имён вложены в глобальное пространство имён. Все имена, которые не входят ни в одно пространство имён и не объявляются в блоках, по умолчанию принадлежат глобальному пространству имён. Имена из заголовочных файлов с расширением h, описывающих функции «старых» стандартных библиотек C, C++ принадлежат глобальному пространству имён.

Анонимные пространства имён объявляются также как именованное пространство имён, но без указания имени. Локальное анонимное пространство имён может быть вложено в именованное пространство имён. Пример:

Namespace Publicnames

{Int k;

Namespace

{

Int m;

Int sub (int a, int b) {return (a - b);}

}

}

По умолчанию в языке С++ существует пространство имён std, которое называется стандартным. В это пространство входят все имена функций из новых заголовочных файлов стандартных библиотек С++. Эти заголовочные файлы не имеют расширения. Данное пространство имён было добавлено в язык после создания языка С++.

  1. Оператор разрешения области видимости.

Для доступа к именам некоторого пространства имён используется оператор разрешения области видимости, который записывается в виде 2-х двоиточий ::. Тогда для обращения к некоторому объекту пространства имён нужно к имени объекта присоединить через этот оператор имя пространства имён.

При использовании имён из глобального пространства имён оператор разрешения области видимости используется без квалификатора (имени пространства имён). Это необходимо в том случае, если глобальная переменная скрывается локальной переменной.

Замечание: для доступа к именам локального анонимного пространства имён оператор разрешения области видимости не используется.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]