作业帮 > 综合 > 作业

类定义为什么要这样class point{public:double x,y;point(){};point(doubl

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 00:41:23
类定义为什么要这样
class point
{
public:
double x,y;
point(){};
point(double x1,double y1){x=x1;y=y1;}//向量赋值
double operator%(const point &a)//叉积
{return x*a.y-y*a.x;}
double operator*(const point &b)//点积
{return x*b.x+y*b.y;}
point operator/(double h)//数量积
{return point(x/h,y/h);}
point operator*(double h)//数量积
{return point(x*h,y*h);}
point operator-(const point &b)//向量-向量=向量
{return point(x-b.x,y-b.y);}
point operator+(const point &b)//向量+向量=向量
{return point(x+b.x,y+b.y);}
}a[maxn][6];
为什么一开始要打一个 point(){}; 不然编译不成功
为什么point(double x1,double y1){x=x1;y=y1;}没有返回类型比如void一类的?
后面那个没有返回类型的是类的构造函数,构造函数,拷贝构造函数,还有析构函数,这三个类里面的函数都是没有返回值的.(没有显性返回值,其实会返还.这个可以去了解一下,不明白可以算了).记住这三个特殊的就是了.然后前面那个point(){};也就是是第五行的构造函数,这其实是构造函数的重载问题.这个函数不需要提供初值.一般情况不要这一句也不会有问题,但是如果你在后面定义类的时候就必须要提供初始值.就是point(double x1,double y1),每定义一个类必须提供两个double类型的值来供初始化.而你最后面有a[maxn][6],也就是说你定义类的二维数组a,而且,你没有提供初值的,所以,你的构造函数里面就必须有不提供初值的,也就是point(){};不知道这么说你懂了没~