問題詳情

31 下列的 C++語言程式執行後輸出為何? #include <iostream>using namespace std;classA{public:static int x;A() {x++;};~A() {x--;};};int A::x=0;int fun(void){A a;A * b;b=new A();delete b;cout<<A::x;}int main(){fun();cout<<" "<<A::x;}
(A)0 0
(B)0 1
(C) 1 0
(D) 1 1

參考答案

答案:C
難度:困難0.297521
統計:A(18),B(34),C(36),D(12),E(0)

用户評論

【用戶】imitation

【年級】高一下

【評論內容】好難。。有誰要解說這題

【用戶】林家芃

【年級】高三上

【評論內容】int main(){fun(); //呼叫fun();cout<<" "<<A::x; //因配置記憶體皆釋放 所以印出x=0}---------呼叫 fun()----------1. A a  // 宣告A a 呼叫建構子 x++ //2.A *b // 宣告型態A的指標變數b3.b=new A(); // 配置一個A型態的空間至指標b 並呼叫建構子 x++4.delete b; // 釋放指標b所占記憶體空間 並呼叫解構子 x--5.cout<<" " <<A::x // 印出x之值 , x值=16.宣告A型態之變數a(A a) 在副程式結束後直接釋放 呼叫解構子x-- 並返回主程式 (註:要是沒有執行步驟4 則以指標配置的記憶體空間在整個程式結束則會一直存在,即不會執行解構子...