民國112年 普通考試 電子工程 計算機概要
第29題
給定以下類別定義:class A{private:static int cnt;class B{private:public:};B* p[5];public:…
題目
給定以下類別定義:class A{private:static int cnt;class B{private:public:};B* p[5];public:A() {cnt=0;}int f(){if (cnt<5)p[cnt++]=new B;return cnt;}};int A::cnt=-100;若在main()中執行以下指令:Avar;var.f();var.f();cout << var.f();則將產生的輸出為何? A. 1 B. 3 D. 5 C. 7
官方答案
- 答案:B. 3
解析
類別 A 的建構函式內容為 cnt=0,因此建立物件 var 時,雖然靜態成員 cnt 原本初始化為 −100,仍被重設為 0。接著每次呼叫 f(),因 cnt<5 成立,便以 new 建立一個 B 物件存入 p[cnt],再將 cnt 遞增後回傳。第一次呼叫回傳 1、第二次回傳 2、第三次回傳 3,cout 印出最後一次的結果 3,故選 B。若忽略建構函式對 cnt 的重設,會誤以為從 −100 起算而得到負值。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。
官方資料
答案以考選部公告之測驗式試題標準答案 PDF 為準。