Разделение программы на части и последующее их объединение в одну программу может привести к конфликтам имен, когда в разных модулях, написанных разными программистами, определены глобальные объекты с одинаковыми именами. Для небольшой программы из пары десятков модулей отследить вхождения имени и заменить его другим труда не составляет. Однако в больших проектах, состоящих из сотен и тысяч модулей, это может превратиться в проблему. В стандарте С++ определен механизм, с помощью которого можно глобальную совокупность имен разделить на части — пространство имен (см. п. 7.3 в [1]).
Как написано на с. 211 в [2], пространства имен — это механизм отражения логической структуры программы. Если некоторые объявления и определения можно объединить по тому или иному критерию, их следует поместить в одно пространство имен. Например, можно поместить все имена, относящиеся к вводу-выводу.
Контрольные вопросы
1. Перечислите отличия шаблона функции от шаблона класса.
2. Можно ли перегружать функцию-шаблон?
3. Какие параметры функции-шаблона выводятся автоматически?
4. Разрешается ли параметрам шаблона функции присваивать параметры по умолчанию?
5. Каким образом «обойти» ограничение частичной специализации ^цля шаблонов функций?
6. Перечислите приемы программирования, с помощью которых шаблон функции становится более универсальным.
7. Дайте определение функтора.
8. Можно ли операцию вызова функции реализовать как виртуальную функцию? А как статическую?
9. Дайте определение функтора-предиката.
10. Чем отличается функтор с состоянием от обычного функтора?
И. Можно ли указатель на функцию присвоить указателю на метод? А наоборот?
12. Отличается ли указатель на обычный метод от указателя на статический метод?
13. Может ли класс-функтор участвовать в иерархии наследования?
14. Объясните назначение адаптера-фиксатора.
15. Можно ли перегружать операцию вызова функции?
Упражнения
1. Написать шаблон функции, принимающей числовой массив в качестве аргумента и возвращающей динамический массив типа ТАггау (см. листинг 11.9) как результат. Размер обычного массива передается в качестве аргумента шаблона. Исходный массив заполнить случайными числами в диапазоне от -40 до +60. Отнять от каждого числа исходного массива наибольшее число. Добавить в массив-результат сумму и среднее арифметическое по абсолютной величине.
2. Написать шаблон функции, которая получает в качестве параметров два указателя на элементы обычного массива, а возвращает массив типа ТАггау (см. листинг 11.9).
Опубликовал Kest
February 15 2014 10:01:36 ·
0 Комментариев ·
3498 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.