Содержание
- 2. Повод: необходимость реализовать некий новый объем кода, аналогичный уже написанному, но изменив типы данных. Варианты решения:
- 3. 1. #define SP(Type) \ struct Shared_ptr { \ Type *p; \ … }; SP(LongString); // не
- 4. 2) Обобщённое программирование с использованием нетипизированных указателей void* , например, библиотечные функции сортировки qsort(), двоичного поиска
- 5. Средствами языка С++ Переопределение функций. Делает текст программы более наглядным, но не избавляет от необходимости повторять
- 6. Шаблоны функций Объявление шаблона функции начинается с заголовка, состоящего из ключевого слова template, за которым следует
- 7. template T toPower (T base, int exponent){ T result = base; if (exponent==0) return (T)1; if
- 8. Требования к фактическим параметрам шаблона T result = base; return (T)1; return (T)0; result *= base;
- 9. Шаблоны функций с несколькими аргументами // Шаблон функции поиска // в массиве template int find(atype* array,
- 10. Отождествление типов аргументов template T max (T a, T b) { return a > b ?
- 11. Шаблоны классов // класс, хранящий // пару значений template class Pair { T a, b; public:
- 12. Полное описание шаблона должно быть известно до его использования. Нельзя разбить объявление и реализацию на .cpp
- 13. Параметризация числовыми параметрами Возможность задания числовых параметров позволяет, например, создавать объекты типов "Вектор из 20 целых",
- 14. Шаблонные методы template struct Array{ template Array & operator= (Array const & m); }; template template
- 15. *Если шаблонная функция (или метод шаблонного класса) не вызывается, то она и не компилируется. *Виртуальная функция
- 16. Специализация шаблона template struct Array { … }; template struct Array { … //отдельная реализация только
- 17. Частичная специализация Массив указателей: template struct Array { … }; // T- указатель на какой-либо тип
- 18. Различия между шаблоном класса и функциями Для функций отсутствуют частичные специализации. Но их можно заменить перегрузкой
- 19. Typedef Чтобы избежать громоздких записей имен типов вида Array , string> > m; стоит использовать typedef:
- 20. Наследование в шаблонах классов template class Trio: public Pair { T c; public: Trio (T t1,
- 22. Скачать презентацию