1. 程式人生 > >建構函式和複製建構函式的呼叫時機

建構函式和複製建構函式的呼叫時機

關於建構函式和複製建構函式以及過載的複製操作何時會被呼叫,我做了一個小例子來進行測試。

#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方法時返回的是一個指標。