Chinaunix首页 | 论坛 | 博客
  • 博客访问: 521927
  • 博文数量: 68
  • 博客积分: 2501
  • 博客等级: 大尉
  • 技术积分: 713
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-07 17:49
个人简介

文章分类

全部博文(68)

分类: C/C++

2010-09-05 16:38:50

当程序第一次执行所定义的静态对象时,该对象被创建,当程序结束时,该对象被释放。
下面的例子输出说明了静态对象生存周期

#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...

阅读(1176) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~