初学C++,遇到一个关于类的问题,大虾指教(附程序)
我最近在看c++的书,刚看到了类这一章
书中有这样一个程序,有些地方我看不太明白,程序如下:
//求2点之间距离的类Distance
#include <iostream.h>
#include <math.h>
class Point //Point类声明,表示一个点的类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<<"Point 拷贝构造函数被调用“<<endl;
}
//类的组合
class Distance
{public:
Distance{point xp1,point xp2);
double GetDis(){return dist;}
private:
Point p1,p2;
double dist;
};
//组合类构造函数
Distance::Distance(point xp1,point xp2):p1(xp1),p2(xp2)
{cout<<"Distance构造函数被调用”<<endl;
double x=double(p1.GetX()-p2.GetX()); //为什么在p1.GetX()-p2.GetX
double y=double(p1.GetY()-p2.GetY()); //表达试前面加double???
// 好象不是强制类型转换吧?
//强制类型转换的把应该把double
//用()括起来吧,请问这里是什么
//意思啊??
dist=sqrt(x*x+y*y);
}
//主函数
void main()
{Point myp1(1,1),myp2(4,5);
Distance myd(myp1,myp2);
cout<<myd.GetDis()<<endl;
}
//其中distance类构造函数体中的语句:
//double x=double(p1.GetX()-p2.GetX()); //为什么在p1.GetX()-p2.GetX
//double y=double(p1.GetY()-p2.GetY()); //表达试前面加double???
// 好象不是强制类型转换吧?
//强制类型转换的把应该把double
//用()括起来吧,请问这里是什么
//意思啊??
我对构造函数还有些不懂的:
是不是只有构造函数才能对私有数据初始化??
比如本题中私有数据dist的值 是在 distance类的构造函数求得的
为什么要在构造函数中求私有数据dist的值呢??是不是因为dist是私有数据呢??
必须这样写? 而不能在公有函数中求私有数据dist的值??
大虾回答啊