首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一路笔试题的解读?求讨论

2012-10-21 
一道笔试题的解读?求讨论~//应该如何解读?C/C++ codeclass A{static int objectCountpublic:A(){objectCo

一道笔试题的解读?求讨论~
//应该如何解读?

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)

热点排行