C++全局static变量和class的static变量
在main函数之前初始化,main函数之后销毁
函数内部的局部static变量
在该函数第一次被调用时初始化,在main函数之后销毁
验证代码
//1.cpp
#include <iostream>
using namespace std;
struct Date
{
Data(){cout<<"create"<<endl;}
~Data(){cout<<"destroy"<<endl;}
};
static Data g_sData;
int main()
{
cout << "main start" << endl;
cout << "main end" << endl;
return 0;
}
//2.cpp
#include <iostream>
using namespace std;
struct Date
{
Data(){cout<<"create"<<endl;}
~Data(){cout<<"destroy"<<endl;}
};
class Test
{
static Data m_sData;
};
Data Test::m_sData;
int main()
{
cout << "main start" << endl;
cout << "main end" << endl;
return 0;
}
//3.cpp
#include <iostream>
using namespace std;
struct Date
{
Data(){cout<<"create"<<endl;}
~Data(){cout<<"destroy"<<endl;}
};
void test()
{
static Data sData;
}
int main()
{
cout << "main start" << endl;
cout << "first time call test" << endl;
test();
cout << "second time call test" << endl;
test();
cout << "main end" << endl;
return 0;
}