#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;
}
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
分享知識,分享快樂!希望中國站在編程之巔!
----融水公子