Урок №176. Параметр non-type шаблона

  Юрий Ворон  | 

    | 

  Обновлено 10 Ноя 2018  | 

 191

Из предыдущих уроков мы знаем, как использовать параметр типа шаблона для создания функций и классов, которые не зависят от определенного типа данных. Однако параметр типа не является единственным параметром, который может иметь шаблон. Шаблоны классов и функций могут иметь еще один параметр, известный как параметр non-type (или параметр «не тип»).

Параметр non-type

Параметр non-type шаблона – это специальный параметр шаблона, который заменяется не типом данных, а конкретным значением. Этим значением может быть:

   Целочисленное значение или перечисление.

   Указатель или ссылка на объект класса.

   Указатель или ссылка на функцию.

   Указатель или ссылка на метод класса.

   std::nullptr_t.

В следующем примере мы создадим шаблон класса StaticArray, который использует как параметр типа, так и параметр non-type. Параметр типа отвечает за тип данных элементов статического массива, а параметр non-type отвечает за размер выделяемого массива.

Результат выполнения программы выше:

9 8 7 6 5 4 3 2 1 0
5.5 5.6 5.7 5.8 5.9

Примечательно, что нам не пришлось динамически выделять переменную-член m_array! Это связано с тем, что для любого созданного объекта класса StaticArray его размер является конкретно заданным значением (можно сказать константой), которое передает пользователь. Например, если мы создадим экземпляр StaticArray<int, 10>, то компилятор заменит переменную размера массива (size) на 10. Таким образом, мы получим m_array типа int[10], который можно выделить статическим образом.

Эту особенность использует известный нам класс из Стандартной библиотеки С++ — std::array. Когда мы выделяем std::array<int, 5>, то int является параметром типа, а 5 параметром non-type шаблона класса!

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (4 оценок, среднее: 5,00 из 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

ВОЛШЕБНАЯ ТАБЛЕТКА ПО С++