Шрифт:
8. Выполните п. 4, используя функцию
9. Добавьте шаблонную функцию
10. Замените функции
11. Напишите константную и неконстантную версии оператора
12. Определите функцию
13. Используйте функцию
14. Бонус: определите класс
Контрольные вопросы
1. Зачем нужно изменять размер вектора?
2. Зачем нужны разные векторы с разными типами элементов?
3. Почему мы раз и навсегда не резервируем большой объем памяти для векторов?
4. Сколько зарезервированной памяти мы выделяем для нового вектора?
5. Зачем копировать элементы вектора в новую память?
6. Какие операции класса
7. Чему равен объект класса
8. Какие две операции определяют копию вектора?
9. Какой смысл имеет копирование объектов класса по умолчанию?
10. Что такое шаблон?
11. Назовите два самых полезных вида шаблонных аргументов?
12. Что такое обобщенное программирование?
13. Чем обобщенное программирование отличается от объектно-ориентированного программирования?
14. Чем класс
15. Чем класс
16. Чем функция
17. Что такое ресурс? Дайте определение и приведите примеры.
18. Что такое утечка ресурсов?
19. Что такое принцип RAII? Какие проблемы он решает?
20. Для чего предназначен класс
Термины
Упражнения
В каждом из упражнений создайте и проверьте (с выводом на печать) набор объектов определенных классов и продемонстрируйте, что ваш проект и реализация действительно работают так, как вы ожидали. Там где задействованы исключения, может потребоваться тщательное обдумывание мест, где могут появиться ошибки.
1. Напишите шаблонную функцию, складывающую векторы элементов любых типов, допускающих сложение.
2. Напишите шаблонную функцию, получающую в качестве аргументов объекты типов
3. Напишите шаблонный класс
4. Превратите класс
5. Определите класс
6. Повторите предыдущее упражнение с классом
7. Примените решение упр. 2 к нескольким объектам типа
8. Реализуйте распределитель памяти (см. раздел 19.3.6), используя функции