函数模板和静态变量:
函数模板的每个实例都有其自己的局部静态变量副本。例如,在以下程序中,有两个实例: 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等的更多准备工作,请参阅“完整面试准备课程” 。