小弟我这个重载输出流有有关问题,请大家帮小弟我一下。多谢
我这个重载输出流有问题,请大家帮我一下。谢谢。
------解决方案--------------------
你这个不是重载有问题,是构造函数有问题。给你修改了。
- 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; }
------解决方案--------------------
楼上正解。。。。