| 看源代碼: #include<iostream> #include<cmath> using namespace std; class Point{     private:     int x,y;     public:     Point(int x,int y);//默認(rèn)形參值構(gòu)造函數(shù) 值傳遞     Point(Point& p);//拷貝構(gòu)造函數(shù)  值傳遞     int Getx();//輸出x     int Gety();//輸出y     void Draw();//畫點(diǎn) }; Point::Point(int x=0,int y=0){     this->x=x;     this->y=y;     cout<<"Point默認(rèn)形參值構(gòu)造函數(shù)被調(diào)用!"<<endl; } Point::Point(Point& p):x(p.x),y(p.y){//不能寫成     :x=p.x,y=p.y     cout<<"Point拷貝構(gòu)造函數(shù)被調(diào)用!"<<endl; } int Point :: Getx(){     return x; } int Point::Gety(){     return y; } class Line{     private:     Point p1,p2;     double len;     public:     Line();//無參構(gòu)造函數(shù)  傳遞點(diǎn)     Line(Point a,Point b);//內(nèi)嵌子對象構(gòu)造函數(shù)     Line(Line& p);//拷貝構(gòu)造函數(shù) 傳遞點(diǎn)     void Getline(); }; Line::Line(){     len=0; } Line::Line(Point a,Point b):p1(a),p2(b){//必須放在初始化列表 完成內(nèi)嵌子對象的構(gòu)造     cout<<"line 內(nèi)嵌子對象 構(gòu)造函數(shù)被調(diào)用"<<endl;     double x=double(a.Getx()-b.Getx());     double y=double(a.Gety()-b.Gety());     len=sqrt(x*x+y*y); } Line::Line(Line& p):p1(p.p1),p2(p.p2){//拷貝構(gòu)造函數(shù)     len=p.len;     cout<<"Line 拷貝構(gòu)造函數(shù)被調(diào)用!"<<endl; } int main(){     Point myp1(1,2),myp2(2,4);     Line myline(myp1,myp2);     Line myline2(myline);     cout<<"len:"<<myline2.Getline()<<endl; } 運(yùn)行的結(jié)果: Point默認(rèn)形參值構(gòu)造函數(shù)被調(diào)用! Point默認(rèn)形參值構(gòu)造函數(shù)被調(diào)用! Point拷貝構(gòu)造函數(shù)被調(diào)用! Point拷貝構(gòu)造函數(shù)被調(diào)用! Point拷貝構(gòu)造函數(shù)被調(diào)用! Point拷貝構(gòu)造函數(shù)被調(diào)用! line 內(nèi)嵌子對象 構(gòu)造函數(shù)被調(diào)用 Point拷貝構(gòu)造函數(shù)被調(diào)用! Point拷貝構(gòu)造函數(shù)被調(diào)用! Line 拷貝構(gòu)造函數(shù)被調(diào)用! len:2.23607 
 | 
|  |