#include <iostream.h>
#include <math.h>
class Point
{
public :
Point(int xx,int yy)//构造函数
{
x=xx;
y=yy;
}
Point(Point &p);//拷贝构造函数
int GetX(){return x;}
int Gety(){return y;}
~Point()
{
}
private:
int x,y;
};
Point::Point(Point &p)
{
x=p.x;y=p.y;
}
class Distance
{
private:
Point p1,p2;
double dist;
public:
Distance(Point a,Point b);
double GetDis(void)
{
return dist;
}
~Distance(){}
};
Distance::Distance(Point a,Point b):p1(a),p2(b)
{
double x=double(p1.GetX()-p2.GetX());
double y=double(p1.GetX()-p2.Gety());
dist=sqrt(x*x+y*y);
}
void main()
{
Point myp1(1,1),myp2(4,5);
Distance myd(myp1,myp2);
cout<<"\n"<<"the distance is: "<<myd.GetDis()<<endl;
}
1.类组合的构造函数设计原则:不仅要对本类中的基本类型成员数据赋初值,也要对对象成员初始化。
(声明形式)
类名::类名(对象成员所需的形参,本类成员的形参):对象1(参数),对象2(参数),…… {本类初始化}
2. 类组合的构造函数调用
a.调用的顺序:先调用内嵌对象的构造函数(按内嵌时类的声明顺序,先声明者先构造);然后调用本类的构造函数。 (注意:析构函数的调用顺序相反,还需仔细揣摩析构的顺序??)
b.若调用缺省构造函数(即无形参的),则内嵌对象的初始化也将调用相应的缺省构造函数