13--8Array数组

来源:互联网 发布:python安装opencv3.0 编辑:程序博客网 时间:2024/06/01 14:35

 

#include<iostream>#include<string.h>#define M 200using namespace std;class array{public:array(int n);~array();int &operator[](int n);array&operator=(array &obj);int operator==(array &obj);void print();private:int size;int *ptr;};//   1 实现构造函数,为类array的对象分配一个包含n个数组元素的整型数组array::array(int n){  int a[M];  cout<<"输入"<<n<<"个整数:";  for(int i=0;i<n;i++)  cin>>a[i];  size=n;  ptr=new int[size+1];            //sizeof(a)  for(int i=0;i<size;i++)             //ptr=a;可能会出错,反正我的程序出错了,还是安全起见吧    {        ptr[i]=a[i];    }}//   2析构函数  撤销对象array::~array(){  delete []ptr;  //数组的撤销方法[]}// 3实现[]的重载,a[n]=y;可以为对象数组的第n个元素赋值,函数的实现避免数组越界int & array::operator [](int n){   if(n>=0&&n<=size)   {   cout<<"[]重载成功!"<<endl;      return ptr[n];   }   else   {       cout<<"[]重载不成功!";  // return  0;   }}//  4 实现运算符=的重载,是对象之间正确赋值array & array::operator=(array &obj){int i; if(*this==obj)                           //很重要 return *this; delete []ptr; ptr=new int[size+1];  //整型数组!  不用strlen()!   size=obj.size;    for(i=0;i<size;i++){        ptr[i]=obj.ptr[i];    }  return *this;}// 5实现==的重载函数,使之可以判断两个数组是否相等int array::operator ==(array &obj){ int count=0,i;//如果两数组大小相等,继续比较数组元素是否相等。否则不等。  if(size==obj.size)  { for(i=0;i<size;i++){        if(ptr[i]=obj.ptr[i])   //挨个比较数组元素是否相等。相等的话count自增1count++;    } if(count==size)        //若最后count==size说明数组元素相等,否则不等 return 2; else return 3;  }  else  return 3;}// printvoid array ::print (){   for(int i=0;i<size;i++)   cout<<ptr[i]<<" ";   cout<<endl<<endl;}//6  编程测试int main(){  array m(5),n(4),q(6);  cout<<"m:";  m.print();   cout<<"n:";  n.print();   cout<<"q:";  q.print();   m[1]=17;   cout<<"m[1]=17.   m:";     m.print();    n=(n=q);    cout<<"把q的值赋给n后,n:";    n.print();  if((n==m)==2)  cout<<"n,m相等!"<<endl;  else  cout<<"n,m不等!"<<endl;return 0;}