当程序第一次执行所定义的静态对象时,该对象被创建,当程序结束时,该对象被释放。
下面的例子输出说明了静态对象生存周期
#include <iostream> #include <string.h> using namespace std;
class A { public: A(int sma) { cout<<"A construct..."<<" "<<sma<<endl; } ~A(){cout<<"destruct..."<<endl;} };
void function(int n) { static A sm(n);//sm 静态对象 //A sm(n);//测试sm不为静态对象 cout<<"function"<<" "<<n<<endl; }
int main() { function(10); function(20); return 0; }
|
1.sm 为静态对象时输出
A construct...10 //sm对象构造时,由构造函数输出
function 10
function 20 //对象sm为静态对象,再次调用function时sm已经存在,不再初始化
destruct...
2.sm 不为为静态对象时输出
A construct...10 //sm对象构造时,由构造函数输出
function 10
destruct...
A construct...20 //新的sm对象构造时,由构造函数输出
function 20
destruct...
阅读(1218) | 评论(0) | 转发(0) |