读书人

小弟我这个重载输出流有有关问题请大

发布时间: 2012-05-21 18:04:41 作者: rapoo

我这个重载输出流有问题,请大家帮我一下。谢谢。

C/C++ code
#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;} 


[解决办法]
你这个不是重载有问题,是构造函数有问题。给你修改了。
C/C++ code
MyArray::MyArray(int sz){    arr = new int[sz];    size=sz;    for(int i=0;i<sz;i++)        arr[i]=0;}
[解决办法]
楼上正解。。。。

读书人网 >C++

热点推荐