我这个重载输出流有问题,请大家帮我一下。谢谢。
#include <iostream.h> class MyArray{private: int *arr; //用于存放动态分配的数组内存首地址 int size; //数组大小public: MyArray(int sz=50); MyArray(int a[],int sz);//由一个内置类型的数组初始化 MyArray(const MyArray &A);//拷贝构造函数 ~MyArray(void);//析构函数,注意释放空间 friend ostream& operator << (ostream& output,MyArray& A);//重载<<,输出数组 };MyArray::MyArray(int sz){ size=sz;}MyArray::MyArray(int a[],int sz) //由一个内置类型的数组初始化{ arr=new int[sz]; for (int i=0; i<sz; ++i) *(arr+i)=*(a+i); //将数组arr中元素逐个赋值 //arr[i]=i+1; //将数组arr中元素逐个赋值 }MyArray::MyArray(const MyArray &A) //拷贝构造函数{ arr=new int[A.size]; for (int i=0; i<A.size; ++i) *(arr+i)=*(A.arr+i); //将数组arr中元素逐个赋值 size=A.size;}MyArray::~MyArray(void) //析构函数,注意释放空间{ if (!arr) // 等同于if (arr_point!=NULL) delete [] arr; //释放在类的生命周期中分配的,arr_point指向的空间 }ostream& operator << (ostream& output,MyArray& A) //重载<<,输出数组{ for(int i=0;i<A.size;++i) output<<*(A.arr+i)<<" "<<endl; return output; }int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}; int b[10]={4,5,6,7,8,9,10,11,12,13}; MyArray arr1(a,10); MyArray arr2(b,10); MyArray arr3(10); cout<<arr3; return 0;}
MyArray::MyArray(int sz){ arr = new int[sz]; size=sz; for(int i=0;i<sz;i++) arr[i]=0;}
[解决办法]
楼上正解。。。。