Рубрики

C ++ | Шаблоны | вопрос 2

Предсказать выход?

#include <iostream>

using namespace std;

  

template <typename T>

void fun(const T&x)

{

    static int count = 0;

    cout << "x = " << x << " count = " << count << endl;

    ++count;

    return;

}

  

int main()

{

    fun<int> (1); 

    cout << endl;

    fun<int>(1); 

    cout << endl;

    fun<double>(1.1);

    cout << endl;

    return 0;

}

(А)

x = 1 count = 0

x = 1 count = 1

x = 1.1 count = 0

(В)

x = 1 count = 0

x = 1 count = 0

x = 1.1 count = 0

(С)

x = 1 count = 0

x = 1 count = 1

x = 1.1 count = 2

(D) Ошибка компилятора

Ответ: (А)
Объяснение: Компилятор создает новый экземпляр функции шаблона для каждого типа данных. Таким образом, компилятор создает две функции в вышеприведенном примере: одну для int и другую для double. Каждый экземпляр имеет свою собственную копию статической переменной. Экземпляр int функции вызывается дважды, поэтому счетчик увеличивается для второго вызова.
Тест на этот вопрос

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

C ++ | Шаблоны | вопрос 2

0.00 (0%) 0 votes