在前面的课程中,我们了解了函数模板的定义和使用方法,并知道它在被调用的时候,会根据传进的模板参数生成一个模板函数,模板函数是函数模板的具现。函数模板是模板函数的抽象。
大家都知道,在C++的函数中可以定义一个静态局部变量,这个静态局部变量的生命周期同整个程序的生命周期相同,但是只有在第一次调用定义这个静态局部变量的函数的时候,才会初始化这个静态局部变量,之后的调用就不会在对它进行初始化。
例1中的代码证明了上述的观点,如下:
例1 函数中的静态局部变量只被初始化一次
#include<iostream>
using namespace std;
void PrintStaticVar()
{
static int a = 0;
a++;
cout << "static var:" << a << endl;
}
void main()
{
PrintStaticVar();
PrintStaticVar();
PrintStaticVar();
}
运行效果如图1所示:
图1 函数中的静态局部变量只被初始化一次
通过实践证明,例1中的静态局部变量a只被初始化了一次。
在上面的例子中,我们讲述了普通函数的静态局部变量的初始化。那么对于函数模板中的静态局部变量是怎么初始化的?它的规则如下&#x