不同存储的对象生存期不同。所谓对象的生存期是指对象从被创建开始到被释放为止的时间。
按生存期的不同对象可分为如下三种:
1、局部对象:当对象被定义时调用构造函数,该对象被创建,当程序退出定义该对象所在的函数体或程序块时,调用析构函数,释放该对象。
2、静态对象:当程序第一次执行所定义的静态对象时,该对象被创建,当程序结束时,该对象被释放。
3、全局对象:当程序开始时,调用构造函数创建该对象,当程序结束时调用析构函数释放该对象。
局部对象是被定义在一个函数体或程序块的,它的作用域小,生存期也短。
静态对象是被定义在一个文件中,它的作用域从定义时起到文件结束时为止,它的作用域比较大,它的生存期也比较大。
#include <iostream>
using namespace std;
int i = 1; //i为全局变量,具有静态生存期
int main()
{
static int a; //a为静态局部变量,具有全局寿命,局部可见
int b=-10; //b,c为局部变量,具有动态生存期
int c=0;
void other(void);
cout <<"-----MAIN------"<<endl;
cout <<"i="<<i<<" a="<<a<<" b="<<b<<" c="<<c<<endl;
c=c+8;
other();
cout<<"-----MAIN-------"<<endl;
cout <<"i="<<i<<" a="<<a<<" b="<<b<<" c="<<c<<endl;
i=i+10;
other();
return 0;
}
void other(void)
{
//a,b为静态局部变量,具有全局寿命,局部可见,只第一次进入函数是被初始化
static int a=2;
static int b;
int c=10;
a = a+2;
i =i+32;
c = c+5;
cout<<"-----OTHER-----"<<endl;
cout <<"i="<<i<<" a="<<a<<" b="<<b<<" c="<<c<<endl;
b=a;
}
运行结果
具有静态、动态生存期对象的时钟程序
#include <iostream>
using namespace std;
class Clock
{
public:
Clock();
void SetTime(int NewN,int NewM,int NewS);
void ShowTime();
~Clock(){}
private:
int Hour,Minute,Second;
};
Clock::Clock()
{
}
void Clock::SetTime(int NewN,int NewM,int NewS)
{
Hour = NewN;
Minute = NewM;
Second = NewS;
}
void Clock::ShowTime()
{
cout <<Hour<<":"<<Minute<<":"<<Second<<endl;
}
Clock globClock;
int main(int argc, char* argv[])
{
cout<<"First Time Output:"<<endl;
globClock.ShowTime();
globClock.SetTime(8,10,15);
Clock myClock(globClock);
cout <<"Second Time Output:"<<endl;
myClock.ShowTime();
return 0;
}
运行结果:
原文链接: https://www.cnblogs.com/haoyuanyuan/archive/2013/05/15/3080773.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/88578
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!