//拷貝建構函式//拷貝建構函式是一種特殊的建構函式,其形參為本類的對象引用。 //作用:使用一個對象(參數指定的對象),去初始化一個正在被建立的同類型對象//class 類名//{ //public :// 類名(形參); //建構函式// 類名(類名 &對象名);//拷貝建構函式// ...//};//類名:: 類名(類名 &對象名) //拷貝建構函式的實現//{函數體}//如果程式員沒有為類聲明拷貝初始化建構函式,則編譯器自己產生一個拷貝建構函式。//這個建構函式執行的功能是:用作為初始值的對象的每個資料成員的值,初始化將要建立的對象的對應資料成員。class Point{ public: Point(int xx = 0,int yy = 0) { X=xx; Y=yy; } Point(Point& p);//拷貝建構函式 int GetX() {return X;} int GetY() {return Y;} private: int X,Y;};Point::Point(Point& p){ X = p.X; Y = p.Y; cout<<"拷貝建構函式被調用"<<endl;}//(1)當用類的一個對象去初始化該類的另一個對象時系統自動調用它實現拷貝賦值。int main(void){ Point A(1,2); Point B(A); //拷貝建構函式被調用cout<<B.GetX()<<endl;return 0;}//(2)若函數的形參為類對象,調用函數時,實參賦值給形參,系統自動調用拷貝建構函式。例如:void fun1(Point p){ cout<<p.GetX()<<endl;} int main(){ Point A(1,2); fun1(A); //調用拷貝建構函式 return 0;} //(3)當函數的傳回值是類對象時,系統自動調用拷貝建構函式。例如:Point fun2(){ Point A(1,2); return A; //調用拷貝建構函式}int main(){Point B; B = fun2(); return 0;}