1)静态变量
int g=1;
int foo_func()
{
static int val;
val=g++;
return val;
}
void main()
{
cout<<foo_func()<<foo_func()<<foo_func()<<endl; //结果 321
}
如果改成
int g=1;
int foo_func()
{
static int val=g++;
return val;
}
void main()
{
cout<<foo_func()<<foo_func()<<foo_func()<<endl; //结果 111
}
结论:静态变量只会初始化一次,所以static int val=g++; 这一句只会执行一次,后面都不会再执行了,另外,cout<<后面参数也符合函数参数执行顺序规则,从右至左
例子2,带点模板
int g=1;
template<class T>
int foo_func()
{
static int val=g++;
return val;
}
int main(int argc, _TCHAR* argv[])
{
cout<<foo_func<int>()<<foo_func<bool>()<<foo_func<double>()<<foo_func<int>()<<foo_func<int>()<<foo_func<int>()<<endl;
return 0;
}
输出结果是,132111, 注意一点就是不同模板参数表示不同的对象或函数
的确是有点超出我的预期....woo....