40 class A
{
friend class B;
private:
static int data;
public:
A(){data++;}
};
class B
{
public:
void f(A var){
A.data+=1;
cnt << A.data;
}
};
int A::data=1;
針對以上類別定義,且在 main()中執行以下指令,則將產生的輸出為何?
A v1, v2, v3;
B v4; v4.f(v1);
(A)2
(B)3
(C)4
(D)5
答案:登入後查看
統計: A(24), B(46), C(84), D(62), E(0) #3481613
統計: A(24), B(46), C(84), D(62), E(0) #3481613
詳解 (共 2 筆)
#7311826
- static 變數不屬於任何特定的物件,而是由該類別的所有物件共同擁有。無論產生多少個 A 物件,記憶體中只有一個 data
- 執行 main()
-
初始: data = 1
-
執行 A v1, v2, v3;
- 產生物件 v1, v2, v3,因此建構子 A() 會被呼叫 3 次。
- data 從初始值 1,每次呼叫都會 data ++ ; 此時 data = 4
- 執行 B v4; v4.f(v1);
- 函式內執行 A.data += 1;
- data 變化:4 + 1 = 5。
-
0
0