Рубрики

Шаблоны и статические переменные в C ++

Шаблоны функций и статические переменные:
Каждый экземпляр шаблона функции имеет свою собственную копию локальных статических переменных. Например, в следующей программе есть два экземпляра: void fun (int) и void fun (double) . Таким образом , два экземпляра статической переменной я есть.

#include <iostream>

  

using namespace std;

  

template <typename T>

void fun(const T& x)

{

  static int i = 10;

  cout << ++i;

  return;

}

  

int main()

{    

  fun<int>(1);  // печатает 11

  cout << endl;

  fun<int>(2);  // печатает 12

  cout << endl;

  fun<double>(1.1); // печатает 11

  cout << endl;

  getchar();

  return 0;

}

Вывод вышеуказанной программы:

  11
  12
  11

Шаблоны классов и статические переменные:
Правило для шаблонов классов такое же, как шаблоны функций
Каждое создание шаблона класса имеет свою собственную копию статических переменных-членов. Например, в следующей программе есть два экземпляра Test и Test . Таким образом , два экземпляра статического переменного счетчик существует.

#include <iostream>

  

using namespace std;

  

template <class T> class Test

{  

private:

  T val; 

public:

  static int count;

  Test()

  {

    count++;

  }

  // некоторые другие вещи в классе

};

  

template<class T>

int Test<T>::count = 0;

  

int main()

{

  Test<int> a;  // значение счетчика для Test <int> теперь равно 1

  Test<int> b;  // значение счетчика для Test <int> теперь равно 2

  Test<double> c;  // значение счетчика для Test <double> равно 1

  cout << Test<int>::count   << endl;  // печатает 2

  cout << Test<double>::count << endl; // печатает 1

     

  getchar();

  return 0;

}

Вывод вышеуказанной программы:

  2
  1

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

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

Шаблоны и статические переменные в C ++

0.00 (0%) 0 votes