成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

拷貝(復(fù)制)構(gòu)造函數(shù)

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

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

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

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

Point::Point(){x = 0;
    y = 0;
    cout<<"缺省樣式的構(gòu)造函數(shù)調(diào)用完畢"<x = X;
    y = Y;
    cout<<"帶參構(gòu)造函數(shù)調(diào)用完畢"<cout<<"點("<x = p.x;
    y = p.y;
    cout<<"拷貝構(gòu)造函數(shù)調(diào)用完畢"<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;
}

運行結(jié)果如下:
拷貝構(gòu)造函數(shù)

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

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

拷貝構(gòu)造函數(shù)的主要應(yīng)用場景:

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

拷貝構(gòu)造函數(shù)各種調(diào)用場合舉例:

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

Point::Point(){x = 0;
    y = 0;
    cout<<"缺省樣式的構(gòu)造函數(shù)調(diào)用完畢"<x = X;
    y = Y;
    cout<<"帶參構(gòu)造函數(shù)調(diào)用完畢"<cout<<"點("<x = p.x;
    y = p.y;
    cout<<"拷貝構(gòu)造函數(shù)調(diào)用完畢"<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;
}

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

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

1
反之,不調(diào)用拷貝構(gòu)造函數(shù)

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

2

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

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

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

廣告

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

小程序開發(fā)
灵丘县| 孝感市| 景德镇市| 禄丰县| 鄂托克前旗| 沭阳县| 天峨县| 华宁县| 织金县| 侯马市| 三原县| 武义县| 平山县| 独山县| 珲春市| 综艺| 嵩明县| 磐石市| 周至县| 石台县| 苍溪县| 武定县| 时尚| 农安县| 凤阳县| 诸暨市| 嘉祥县| 浦北县| 来宾市| 荥经县| 赫章县| 西贡区| 来凤县| 湖南省| 榆树市| 山西省| 大洼县| 潞城市| 遵义县| 淅川县| 唐山市|