一道笔试题的解读?求讨论~
//应该如何解读?
- C/C++ code
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():1int 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疑问:考虑到临时对象的生成,并且A h2=f(h)是初始化而非赋值,
实际执行的结果为:
A():1
A(const A& r):2
Begin: f(A x)
A(const A& r):3
~A():2
End(main): f(A x)
~A():1
~A():0
对A f(A x)的调用不大理解,求解释讨论(注释部分是我理解的,与实际结果不一致),谢谢!
[解决办法]
把A传递进函数以后是一次Copy,然后析构他,但是返回时也要一份副本,所以就在Copy一次
也就是进去以后Object的值就没有便(加1又减去1)