//referred from Wei Guo, Peking University
#include<iostream>
using namespace std;
class Demo{
int id;
public:
Demo(int i)
{
id = i;
cout<<"id="<<id<<"constructed"<<endl;
}
~Demo()
{
cout<<"id="<<id<<"destructed"<<endl;
}
};
Demo d1(1);
void Func()
{
static Demo d2(2);
Demo d3(3);
cout<<"func"<<endl;
}
int main()
{
Demo d4(4);
d4 = 6;
cout<<"main"<<endl;
{
Demo d5(5);
}
Func();
cout<<"main ends"<<endl;
return 0;
}
上述代码是节选自郭炜老师《新标准c++程序设计》p44-45的代码,非常有价值。而且全书精炼有趣,发人深省,是一本入门的好书。
程序的输出结果:
id=1 constructed
id=4 constructed
id=6 constructed
id=6 destructed
main
id=5 constructed
id=5 destructed
id=2 constructed
id=3 constructed
func
id=3 destructed
main ends
id=6 constructed
id=2 constructed
id=1 constructed
global variable 当程序结束时才会消亡, static variable 本质上也是全局变量,所以d1和d2按生成顺序的反序消亡;
注意d4 = 6那一句。