📜  C++中的模板和静态变量

📅  最后修改于: 2021-05-30 17:51:12             🧑  作者: Mango

函数模板和静态变量:
函数模板的每个实例都有其自己的局部静态变量副本。例如,在以下程序中,有两个实例: void fun(int)void fun(double) 。因此,存在两个静态变量i的副本。

#include 
  
using namespace std;
  
template 
void fun(const T& x)
{
  static int i = 10;
  cout << ++i;
  return;
}
  
int main()
{    
  fun(1);  // prints 11
  cout << endl;
  fun(2);  // prints 12
  cout << endl;
  fun(1.1); // prints 11
  cout << endl;
  getchar();
  return 0;
}

上面程序的输出是:

11
  12
  11

类模板和静态变量:
类模板的规则与函数模板相同
类模板的每个实例都有自己的成员静态变量副本。例如,在下面的程序中有两个实例Test测试。因此,存在两个静态变量计数副本。

#include 
  
using namespace std;
  
template  class Test
{  
private:
  T val; 
public:
  static int count;
  Test()
  {
    count++;
  }
  // some other stuff in class
};
  
template
int Test::count = 0;
  
int main()
{
  Test a;  // value of count for Test is 1 now
  Test b;  // value of count for Test is 2 now
  Test c;  // value of count for Test is 1 now
  cout << Test::count   << endl;  // prints 2  
  cout << Test::count << endl; //prints 1
     
  getchar();
  return 0;
}

上面程序的输出是:

2
  1
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”