创建对象数组,对对象数组初始化的时候,程序报错,但是删掉我自己写的复制构造函数,调用默认的复制构造函数,就没有问题??

对象数组的复制构造函数应该如何编写??
我的程序如下

#include<iostream>
#include<cmath>
using namespace std;
class Point{
    public:
        Point(int xx,int yy);
        ~Point(){};
        Point(Point &p){x=p.x;y=p.y;dis=p.dis;}
        friend void order(Point a[],int n);
        void show()
        {
            cout<<"("<<x<<","<<y<<")"<<" "<<"距离:"<<dis<<endl; 
        }
    private:
        int x,y;
        int dis;
};
Point::Point(int xx,int yy)
{
    x=xx;
    y=yy;
    dis=sqrt(xx*xx+yy*yy);
}
void order(Point a[],int n)
{
    for(int i=n;i>=0;i--)//元素逐个比较 
        for(int k=0;k<i-1;k++)
        {
            if(a[k].dis>a[k+1].dis)
            {
                swap(a[k],a[k+1]);//满足条件的数组元素交换 
            }
            
        }
}
int main()
{
    Point a[10]={Point(-1,-3),Point(-2,-4),Point(1,3),Point(7,8),Point(-2,-5),
                 Point(3,-4),Point(5,3),Point(1,7),Point(6,3),Point(4,4)};
    order(a,10);
    for(int i=0;i<10;i++)
    {
        a[i].show(); 
    }
    return 0;
}

这是原题:
创建点的对象数组,包含10个点,编写函数对数组元素排序(按照各点距离原点的远近排列),在主函数中输出排序后的点及其距离值(25分)。10个点的坐标分别为: (-1,-3),(-2,-4),(1,3),(7,8),(-2,5),(3,-4),(5,3),(1,7),(6,3),(4,4),请回答问题后,编写此程序。

测试一下这个代码没有毛病啊,你到底有啥问题呢