下面程序输出什么?为什么?
class A
{private:
static int i;
public:
A()
{
i++;
}
A(const A&)
{
i++;
}
static void output()
{
cout<<i<<endl;
}
};
A f(A& a)
{
A aa = a; //调用拷贝构造函 ,不再调用其他函数
return a;
}
int A::i = 0;
int _tmain(int argc, _TCHAR* argv[])
{
A aa; //调用一次构造函数+1
f(aa).output();//f(a)实参传形参,因为传的是引用,所以没有调用构造函数,f(a)内部调用一次 拷贝构造函数+1
//这里f(a)返回一个临时变量对象;这里又要调用一次构造函数+1
}