欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

[C++]拷貝(復制)構造函數(shù)-創(chuàng)新互聯(lián)

拷貝(復制)構造函數(shù)

拷貝構造函數(shù)是一種特殊的構造函數(shù),其形參為本類的對象引用
形式如下:

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供安寧網站建設、安寧做網站、安寧網站設計、安寧網站制作等企業(yè)網站建設、網頁設計與制作、安寧企業(yè)網站模板建站服務,10余年安寧做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
class 類名{public :
類名(形參);    //構造函數(shù)  
類名(類名 &對象名);//拷貝構造函數(shù)
};

拷貝構造函數(shù)實例:

#includeusing namespace std;
class Point{public:
    Point();    //缺省構造函數(shù)
    Point(int X,int Y); //帶參構造函數(shù)
    ~Point();   //析構函數(shù)
    Point(Point &p);   //拷貝構造函數(shù)聲明
    void setPoint(int X,int Y); //設置點坐標
    int getX(); //獲得點的X坐標
    int getY(); //獲得點的Y坐標
    void setX(int X); //設置點的X坐標
    void setY(int Y); //設置點的Y坐標
    private:
    int x,y;
};

Point::Point(){x = 0;
    y = 0;
    cout<<"缺省樣式的構造函數(shù)調用完畢"<x = X;
    y = Y;
    cout<<"帶參構造函數(shù)調用完畢"<cout<<"點("<x = p.x;
    y = p.y;
    cout<<"拷貝構造函數(shù)調用完畢"<x = X;
    y = Y;
}
int Point::getX(){return x;
}
int Point::getY(){return y;
}
void Point::setX(int X){x = X;
}
void Point::setY(int Y){y = Y;
}
int main(void)
{Point p1(10,10),p2(p1);
    p1.setPoint(1,1);
    return 0;
}

運行結果如下:
拷貝構造函數(shù)

如果沒有為類聲明構造函數(shù),則編譯器自己生成一個拷貝構造函數(shù)。

  • 該拷貝構造函數(shù)所執(zhí)行的功能是:用作為初始值的對象的每個數(shù)據成員的值,初始化將要建立的對象的對應的數(shù)據成員

拷貝構造函數(shù)的主要應用場景:

  • (1) 在聲明語句中用一個對象初始化另一個對象。例如
Point p1;
Point p2 = p1,p3(p1);
  • (2) 若函數(shù)的形參是類對象,調用函數(shù)時,實參賦值給形參,系統(tǒng)自動調用拷貝構造函數(shù)。
    例如,將一個對象作為參數(shù)按值調用方式傳遞給另一個對象時生成對象副本。
void fun1(Point p){cout<Point A(1,2);
    fun1(A);
}

拷貝構造函數(shù)各種調用場合舉例:

#includeusing namespace std;
class Point{public:
    Point();    //缺省構造函數(shù)
    Point(int X,int Y); //帶參構造函數(shù)
    ~Point();   //析構函數(shù)
    Point(Point &p);   //拷貝構造函數(shù)聲明
    void setPoint(int X,int Y); //設置點坐標
    int getX(); //獲得點的X坐標
    int getY(); //獲得點的Y坐標
    void setX(int X); //設置點的X坐標
    void setY(int Y); //設置點的Y坐標
    private:
    int x,y;
};

Point::Point(){x = 0;
    y = 0;
    cout<<"缺省樣式的構造函數(shù)調用完畢"<x = X;
    y = Y;
    cout<<"帶參構造函數(shù)調用完畢"<cout<<"點("<x = p.x;
    y = p.y;
    cout<<"拷貝構造函數(shù)調用完畢"<x = X;
    y = Y;
}
int Point::getX(){return x;
}
int Point::getY(){return y;
}
void Point::setX(int X){x = X;
}
void Point::setY(int Y){y = Y;
}
void f(Point p) //函數(shù)的形參是類的對象
{cout<<"函數(shù)f之中"<//函數(shù)的返回值是類的對象
    Point a(7,33);
    cout<<"函數(shù)g之中:"<Point p1,p2(15,10),p3(p1),p4 = p2;
    f(p2);
    p2 = g();
    return 1;
}

運行結果:
拷貝構造函數(shù)2
Notice:只有在聲明語句中使用一個變量初始化另一個對象才調用拷貝構造函數(shù)

int main()
{Point p1(1,2),p2 = p1;
    return 1;
}

1
反之,不調用拷貝構造函數(shù)

int main()
{Point p1(1,2),p2;
	p2 = p1;
    return 1;
}

2

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

本文標題:[C++]拷貝(復制)構造函數(shù)-創(chuàng)新互聯(lián)
標題路徑:http://www.chinadenli.net/article38/dshssp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供云服務器用戶體驗ChatGPT外貿網站建設App開發(fā)建站公司

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)