C++对象的生活生计期
添加时间:2013-5-15 点击量:
不合存储的对象生活生计期不合。所谓对象的生活生计期是指对象从被创建开端到被开释为止的时候。
按生活生计期的不合对象可分为如下三种:
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;
}
运行成果:
无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
不合存储的对象生活生计期不合。所谓对象的生活生计期是指对象从被创建开端到被开释为止的时候。
按生活生计期的不合对象可分为如下三种:
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;
}
运行成果:
无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》