答案是:B
a(4) - 1 次。這個定義了壹個變量a,用4初始化a (可以知道AB類中至少定義了壹個成員,該成員可被構造函數初始化)
b[3] - 3次。 這個定義了壹個數組b,有三個元素,那麽b[3]就是初始化了3個AB對象,因此被調用3次。
*p[2] - 0 次。 這個定義壹個指針數組(2個元素的數組,數組內容是指針)。這個雖然定義了數組,但由於它的內容是指針,而指針只不過是壹個地址(32位機器上就壹個32位數),還沒有具體指向某個對象,因此沒有調用任何構造函數。
下面是測試代碼:
#include?<iostream>using?namespace?std;
static?int?s_count?=?0;
class?AB?{
public:
AB(int?i=0)?:?m(i)?{s_count++;}
~AB()?{;}
private:
int?m;
};
int?main(int?argc,?char?const?*argv[])
{
AB?a(4),?b[3],?*p[2];
cout?<<?s_count?<<?endl;
}