Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
cpp-exam.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
42.72 Кб
Скачать

5. Области видимости и пространства имен.

В С++ поддерживается три их типа: локальная область видимости, область видимости пространства имен и область видимости класса.

1 Локальная область – это часть исходного текста программы, содержащаяся в определении функции (или блоке внутри тела функции). Каждая составная инструкция (или блок) внутри функции также представляет собой отдельную локальную область. Такие области могут быть вложенными. Глобальная область видимости включает в себя обе локальных.

2 Область видимости объекта (переменной или функции) определяет, в каких участках программы допустимо использование имени этого объекта. Поскольку пространства с глобальной областью видимости добавляются к системе, то имеется возможность возникновения коллизии имен. Это становится особенно актуальным при использо­вании библиотек, разработанных различными независимыми производителями. Использование namespace позволяет разбить глобальное пространство имен с тем, чтобы решить подобную про­блему. По существу, namespace определяет область видимости.

Самая внешняя часть называется глобальной областью видимости или глобальной областью видимости пространства имен. Объекты, функции, типы и шаблоны могут быть определены в глобальной области видимости. Разрешено задать пользовательские пространства имен, заключенные внутри глобальной области с помощью определения пространства имен. Каждое такое пространство является отдельной областью видимости. namespace Cplusplus {}

Глобальный объект существует на протяжении всего времени выполнения программы. Время жизни глобального объекта начинается с момента запуска программы и заканчивается с ее завершением.

3 Каждое определение класса представляет собой отдельную область видимости класса.

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

6. Перегрузка функций. Разрешение перегрузки.

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

В C++ двум или более функциям может быть дано одно и то же имя при условии, что их списки параметров различаются либо числом параметров, либо их типами.

Все перегруженные функции объявляются в одной и той же области видимости.

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

При разрешении перегрузки функции выполняются следующие шаги:

  1. Выделяется множество перегруженных функций для данного вызова, а также свойства списка аргументов, переданных функции/множествово кандидатов

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

  3. Находится функция, которая лучше всего соответствует вызову.

Ранги преобразований:

  1. точное соотношение (array->pointer, funct->pointer)

  2. повышение типа (char, short->int; float->double)

  3. стандартные преобразования (все преобр.типов, не относящ. к повыш. типов; преобраз. м\ж цел.числами и плвающ. запятой)

  4. пользовательские преобразования

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