64,266
社区成员
发帖
与我相关
我的任务
分享
class A
{
static int objectCount;
public:
A()
{
objectCount++;
cout << "A():" << objectCount << endl;
}
A(const A& r)
{
objectCount++;
cout << "A(const A& r):" << objectCount << endl;
}
~A()
{
objectCount--;
cout << "~A():" << objectCount << endl;
}
};
int A::objectCount = 0;
A f(A x) //调用默认拷贝构造函数 A(const A& r):2
{
cout << endl << "Begin: f(A x)" << endl;
return x;
} //~A():1
int main()
{
A h; //A():1
A h2 = f(h); //调用默认拷贝构造函数A(const A& r):2
cout << endl << "End(main): f(A x)" << endl << endl;
return 0;
} //~A():1 析构h
//~A():0 构函h2
#include <iostream>
using namespace std;
class A
{
static int objectCount;
public:
A()
{
objectCount++;
cout << "A():" << objectCount << endl;
}
A(const A& r)
{
objectCount++;
cout << "A(const A& r):" << objectCount << endl;
}
~A()
{
objectCount--;
cout << "~A():" << objectCount << endl;
}
};
int A::objectCount = 0;
A f(A x)
{
cout << endl << "Begin: f(A x)" << endl;
return x;
}
int main()
{
A h; //默认构造函数
A h2 = f(h); //函数里,一共产生了两个临时对象,一个是形参的副本,一个是返回值的副本,h2未被构造
cout << endl << "End(main): f(A x)" << endl << endl;
return 0;
}