【系統公告】頁面上方功能列及下方資訊全面更換新版,舊用戶可再切回舊版。 前往查看

1.計算機原理 2.網路概論題庫下載題庫

上一題
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
難度: 困難
2F
林家芃 高三上 (2018/07/02)
int main(){fun(); //呼叫fun();cout<<" "<<A::x; //因配置記憶體皆釋放 所以印出x=0}

---------呼叫 fun()----------

1. A a  // 宣告A a 呼叫建構子 x++ //

2.A *b // 宣告型態A的指標變數b

3.b=new A(); // 配置一個A型態的空間至指標b 並呼叫建構子 x++

4.delete b; // 釋放指標b所占記憶體空間 並呼叫解構子 x--

5.cout<<" " <<A::x // 印出x之值 , x值=1

6.宣告A型態之變數a(A a) 在副程式結束後直接釋放 呼叫解構子x-- 並返回主程式 

(註:要是沒有執行步驟4 則以指標配置的記憶體空間在整個程式結束則會一直存在,即不會執行解構子...


查看完整內容
3F
Phil(112高普雙榜) 高三上 (2020/07/09)

A a是類別A建立的物件a,然後去呼叫建構子x++,並不是宣告成A a;

A *b是類別A建立的指標物件b,A不是型態,是類別


4F
目標國營聯招 小六下 (2021/09/12)

創建一個類別 就會呼叫建構函式

A a會呼叫

所以x=1

但A *b不會呼叫 因為他是宣告指標

x一樣=1

b=new A();這時才會呼叫

x=2

然後刪除b 這時會觸發~ 也就是結束呼叫

x--所以x=1

然後印出來 第一個是1

函式結束

因為a是區域變數 函數結束就沒了

所以a也會呼叫~解構函式

x-- 現在x=0

然後印出

31 下列的 C++語言程式執行後輸出為何?  #include <..-阿摩線上測驗