打印出221
Obj obj1; //會調用構造,所以i++了(變為1了)
f(); //調用函數f(),在函數內定義了一個對象,也會調用構造,i++了(變為2了),打印出第一個數字2,
//打印完以後,f()函數結束了,obj2離開了作用域,調用析構i--了(變為1了)
Obj *obj3 = new Obj;//會調用構造,所以i++了(變為2了)
cout << obj3->getVal();//打印出2
delete obj3;//調用析構,i--(變為1了)
cout << Obj::getVal();//打印出1
注:
靜態數據成員是所有對象所公有的,因此,對多個對象來說,靜態數據成員只存儲一處,供所有對象共用。靜態數據成員的值對每個對象都是一樣,但它的值是可以更新的。只要對靜態數據成員的值更新一次,保證所有對象存取更新後的相同的值,這樣可以提高時間效率。