数组的操作符重载

来源:互联网 发布:淘宝店铺如何替换图片 编辑:程序博客网 时间:2024/05/22 08:04
#ifndef _ARRAY_H_#define _ARRAY_H_class Array{private:int mLength;int * mSpace;public:Array(int lenght);Array(const Array& obj);int getlength();void setData(int index,int value);int getData(int index);~Array();int& operator[](int i);Array& operator=(Array& a2);bool operator==(Array &a1);bool operator!=(Array& a1);};#endif



#include <iostream>#include "01.h"Array::Array(int length){   if(length<0)   {   length=0;   }   mLength=length;   mSpace=new int[mLength];}Array::Array(const Array& obj){mLength=obj.mLength;mSpace=new int[mLength];for(int i=0;i<mLength;i++){mSpace[i]=obj.mSpace[i];}}int Array::getlength(){return mLength;}int Array::getData(int index){return mSpace[index];}Array::~Array(){mLength=-1;delete[] mSpace;}int& Array::operator[](int i){  return mSpace[i];}//a3=a2 //执行=操作//如果a3 已经分配内存需要释放//根据a2 开辟内存空间,把a2的值copy 到a3 中。 Array& Array::operator=(Array& a2){if(this->mSpace!=NULL){delete[]mSpace;mLength=0;}this->mLength=a2.mLength;this->mSpace=new int[this->mLength];for(int i=0;i<this->mLength;i++){mSpace[i]=a2[i]; }return *this;}bool Array::operator==(Array& a1){//a1 和a2 长度相等if(this->mLength!=a1.mLength){   return false;}for(int i=0;i<this->mLength;i++){if(this->mSpace[i]!=a1[i]){   return false;}}  return true;}bool Array:: operator!=(Array& a1){ return !(*this==a1);} 


#include <iostream>#include "01.h"using namespace std;void main(){Array a1(10);for(int i=0;i<a1.getlength();i++){//给数组的元素赋值 需要把数组元素本身 返回回来( )//函数返回值当左值,需要返回一个引用//a1.setData(i,i);  a1[i]=100+i;}for(int i=0;i<a1.getlength();i++){printf("array %d:%d\n",i,a1[i]);}Array a2=a1;for(int i=0; i<a2.getlength(); i++){printf("aray %d:%d\n",i,a2.getData(i));}}



0 0
原创粉丝点击