构造函数和复制构造函数的调用时机

来源:互联网 发布:生活中的帅哥知乎 编辑:程序博客网 时间:2024/05/29 13:44

关于构造函数和复制构造函数以及重载的复制操作何时会被调用,我做了一个小例子来进行测试。

#include <iostream>using namespace std;class AAA{public:    AAA()    {        cout<<"constrctor"<<endl;    }    AAA(const AAA & a)    {        cout<<"copy constrctor"<<endl;    }    AAA(int i)    {        cout<<"paramter constrctor"<<endl;    }    AAA& operator =(const AAA & a)    {        cout<<"copy function"<<endl;        return *this;    }};int main(){    cout<<"a1:";    AAA a1(3);    cout<<"a2:";    AAA a2 = AAA(4);    cout<<"a3:";    AAA a3=AAA();    cout<<"a4:";    AAA a4(a2);    cout<<"a5:";    AAA a5;    a5=a3;    cout<<"a6:";    AAA a6=a5;    cout<<"a7:";    AAA *a7=new AAA(1);    cout<<"a8:";    AAA *a8=new AAA();    return 0;}

由此可以看出几点:
1、AAA a();AAA a=AAA();是完全等价的(当然AAA a(1);AAA a=AAA(1);也是相同的);
2、对于
AAA a5;
AAA a6=a5;

这种操作,实际上是等价于AAA a6(a5);,实际上是会调用复制构造函数。
3、使用new方法时返回的是一个指针。

原创粉丝点击