这个有关数组的C++编程问题,如何求解?

试定义一个数组类CArray,声明如下:

class CArray{
 int *arr;    //数组
 int n;     //数组元素个数
public:
 CArray();    //构造函数
 CArray(int a[],int n); //构造函数
 CArray(CArray &t);  //拷贝构造函数
 ~CArray();    
 int Insert(int x);  //在数组中插入整数x,保持数组从小到大排序
 void Print();   //输出数组
};

在如下主函数中对该类进行测试。

int main() {
 int a[] = { 3,6,9 },x;
 CArray a1(a, 3),a2(a1);
 for (int i = 0; i < 5; i++) {
  cin >> x;
  a2.Insert(x);
 }
 a2.Print();
 return 0;
}

输入输出示意如下:
1 2 3 4 5
1 2 3 3 4 5 6 9
请在答题窗口录入编写的完整程序。


#include <iostream>
using namespace std;
class CArray {
    int *arr;              //数组
    int n;                 //数组元素个数
public:
    CArray();              //构造函数
    CArray(int a[],int n); //构造函数
    CArray(CArray &t);     //拷贝构造函数
    ~CArray();
    int Insert(int x);     //在数组中插入整数x,保持数组从小到大排序
    void Print();          //输出数组
};
CArray::CArray() {
    arr=NULL;
    n=0;
}
CArray::CArray(int a[],int an) {
    n=an;
    arr=new int[n];
    for (int i=0;i<n;i++) arr[i]=a[i];
    for (int i=0;i<n-1;i++) {
        for (int j=i+1;j<n;j++) {
            if (arr[i]>arr[j]) {
                int t;
                t=arr[i];arr[i]=arr[j];arr[j]=t;
            }
        }
    }
}
CArray::CArray(CArray &t) {
    arr=new int[t.n];
    n=t.n;
    for (int i=0;i<n;i++) arr[i]=t.arr[i];
}
CArray::~CArray() {
    delete[] arr;
}
int CArray::Insert(int x) {
    int *arr1=new int [n+1];
    for (int i=0;i<n;i++) arr1[i]=arr[i];
    arr1[n]=x;
    delete[] arr;
    arr=arr1;
    n++;
    for (int i=0;i<n-1;i++) {
        for (int j=i+1;j<n;j++) {
            if (arr[i]>arr[j]) {
                int t;
                t=arr[i];arr[i]=arr[j];arr[j]=t;
            }
        }
    }
    return n;
}
void CArray::Print() {
    if (n<=0) {cout<<endl;return;}
    if (n==1) {cout<<arr[0]<<endl;return;}
    cout<<arr[0];
    for (int i=1;i<n;i++) cout<<" "<<arr[i];
    cout<<endl;
}
int main() {
    int a[] = { 3,6,9 },x;
    CArray a1(a, 3),a2(a1);
    for (int i = 0; i < 5; i++) {
        cin >> x;
        a2.Insert(x);
    }
    a2.Print();
    return 0;
}
//输入
//1 2 3 4 5
//输出
//1 2 3 3 4 5 6 9
//