有如下程序: #include using namespace std; class Obj { static in
有如下程序: #include <iostream> using namespace std; class Obj { static int i; public: Obj( ){i++;} ~Obj(){i--;} static int getVal( ){ return i;} }; int Obj::i=0; void f() {Obj ob2; cout<<ob2.getVal( ); } int main( ){ Obj ob1; f(); Obj *ob3=ew Obj; cout<<ob3->getVal( ); delete ob3; cout<<Obj::getVal( ); return 0; } 程序的輸出結(jié)果是
A.232
B.231
C.222
D.221
正確答案:D解析:本題主要考查的是靜態(tài)成員。靜態(tài)成員的特性是不管這個類創(chuàng)建了多少個對象,它的靜態(tài)成員都只有一個拷貝(副本),這個副本被所有屬于這個類的對象共享。本例中,Obj類定義了一個靜態(tài)數(shù)據(jù)成員i,并初始化為0。在主函數(shù)中,首先定義了1個該類對象ob1,所以構(gòu)造函數(shù)被執(zhí)行1次,i被加1。然后調(diào)用函數(shù)f(),該函數(shù)中又定義了一個對象ob2,此時i再次加1變成2,然后通過靜態(tài)成員函數(shù)getVal()輸出i的值2。f()函數(shù)結(jié)束了,局部變量ob2被釋放,故析構(gòu)函數(shù)被調(diào)用了1次,i變成1。回到主函數(shù)中,又動態(tài)創(chuàng)建了1個
詞條內(nèi)容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學等領(lǐng)域),建議您咨詢相關(guān)領(lǐng)域?qū)I(yè)人士。