拷貝構造函數是一種特殊的構造函數,其形參為本類的對象引用
創新互聯專業為企業提供安寧網站建設、安寧做網站、安寧網站設計、安寧網站制作等企業網站建設、網頁設計與制作、安寧企業網站模板建站服務,10余年安寧做網站經驗,不只是建網站,更提供有價值的思路和整體網絡服務。
形式如下:
class 類名{public :
類名(形參); //構造函數
類名(類名 &對象名);//拷貝構造函數
};
拷貝構造函數實例:
#includeusing namespace std;
class Point{public:
Point(); //缺省構造函數
Point(int X,int Y); //帶參構造函數
~Point(); //析構函數
Point(Point &p); //拷貝構造函數聲明
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<<"缺省樣式的構造函數調用完畢"<x = X;
y = Y;
cout<<"帶參構造函數調用完畢"<cout<<"點("<x = p.x;
y = p.y;
cout<<"拷貝構造函數調用完畢"<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;
}
運行結果如下:
如果沒有為類聲明構造函數,則編譯器自己生成一個拷貝構造函數。
拷貝構造函數的主要應用場景:
Point p1;
Point p2 = p1,p3(p1);
void fun1(Point p){cout<Point A(1,2);
fun1(A);
}
拷貝構造函數各種調用場合舉例:
#includeusing namespace std;
class Point{public:
Point(); //缺省構造函數
Point(int X,int Y); //帶參構造函數
~Point(); //析構函數
Point(Point &p); //拷貝構造函數聲明
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<<"缺省樣式的構造函數調用完畢"<x = X;
y = Y;
cout<<"帶參構造函數調用完畢"<cout<<"點("<x = p.x;
y = p.y;
cout<<"拷貝構造函數調用完畢"<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) //函數的形參是類的對象
{cout<<"函數f之中"<//函數的返回值是類的對象
Point a(7,33);
cout<<"函數g之中:"<Point p1,p2(15,10),p3(p1),p4 = p2;
f(p2);
p2 = g();
return 1;
}
運行結果:
Notice:只有在聲明語句中使用一個變量初始化另一個對象才調用拷貝構造函數
int main()
{Point p1(1,2),p2 = p1;
return 1;
}
反之,不調用拷貝構造函數
int main()
{Point p1(1,2),p2;
p2 = p1;
return 1;
}
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
本文標題:[C++]拷貝(復制)構造函數-創新互聯
標題路徑:http://vcdvsql.cn/article38/dshssp.html
成都網站建設公司_創新互聯,為您提供云服務器、用戶體驗、ChatGPT、外貿網站建設、App開發、建站公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯