Рубрики

C ++ | Шаблоны | Вопрос 10

Вывод следующей программы.

#include <iostream>

using namespace std;

  

template <class T, int max>

int arrMin(T arr[], int n)

{

   int m = max;

   for (int i = 0; i < n; i++)

      if (arr[i] < m)

         m = arr[i];

  

   return m;

}

  

int main()

{

   int arr1[]  = {10, 20, 15, 12};

   int n1 = sizeof(arr1)/sizeof(arr1[0]);

  

   char arr2[] = {1, 2, 3};

   int n2 = sizeof(arr2)/sizeof(arr2[0]);

  

   cout << arrMin<int, 10000>(arr1, n1) << endl;

   cout << arrMin<char, 256>(arr2, n2);

   return 0;

}

(A) Ошибка компилятора, аргумент шаблона должен быть типом данных.
(В)

10
1

(С)

10000
256

(D)

1
1

Ответ: (Б)
Объяснение: Мы можем передавать не типовые аргументы в шаблоны. Нетипичные параметры в основном используются для указания максимальных или минимальных значений или любых других постоянных значений для конкретного экземпляра шаблона. Важно отметить, что параметры не типового типа должны быть постоянными. Компилятор должен знать значение не типовых параметров во время компиляции. Потому что компилятор должен создавать функции / классы для указанного не типового значения во время компиляции.

Ниже приведен еще один пример нетиповых параметров.

#include <iostream>
using namespace std;

template 
 T fun (T arr[], int size)
{
    if (size > N)
      cout << "Not possible";
    T max = arr[0];
   for (int i = 1; i < size; i++)
      if (max < arr[i])
          max = arr[i];
   return max;
}

int main ()
{
    int arr[] = {12, 3, 14};
    cout << fun  (arr, 3);
}

Тест на этот вопрос

Рекомендуемые посты:

C ++ | Шаблоны | Вопрос 10

0.00 (0%) 0 votes