建構函式、解構函式和變數的生存期
阿新 • • 發佈:2018-12-19
//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那一句。