重载特殊操作符:[]、=、==、!=

来源:互联网 发布:java 线程局部变量 编辑:程序博客网 时间:2024/05/21 04:18
#include "iostream"#include <cstdio>#include  <cstdlib>using namespace std;class Array{private:    int mLength;    int* mSpace;public:    Array(int length=0);    Array(const Array& obj);    int length();    void setData(int index, int value);    int getData(int index);    int& operator[](int N);    bool operator==(Array & obj);    bool operator!=(Array & obj);    Array& operator=(Array & obj);    ~Array();};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::length(){    return mLength;}void Array::setData(int index, int value){    mSpace[index] = value;}int Array::getData(int index){    return mSpace[index];}Array::~Array(){    mLength = -1;    delete[] mSpace;}int& Array::operator[](int N){    return mSpace[N];}Array& Array::operator=(Array & obj){    if(mSpace != NULL)        delete[] mSpace;    mLength = obj.mLength;    mSpace = new int[mLength];    for(int i=0; i<mLength; i++)    {        mSpace[i] = obj.mSpace[i];    }    return *this;}bool Array::operator==(Array & obj){    int i=sizeof(mSpace)/sizeof(int);    int j=sizeof(obj.mSpace)/sizeof(int);    if (i == j)    {        for(int k=0;k<i;k++)        {            if(mSpace[k]!=obj.mSpace[k])                return false;        }        return true;    }    else    {        return false;    }}bool operator!=(Array & obj){    return !(*this==obj);}int main(){    Array a1(10);    Array a3(10);    for(int i=0; i<a1.length(); i++)    {        //a1.setData(i, i);         a1[i] = i;         a3[i] = i+1;    }    for(int i=0; i<a1.length(); i++)    {       //printf("array %d: %d\n", i, a1.getData(i));         printf("array a1[%d]: %d\n", i, a1[i]);    }    Array a2 = a1;//copy构造    for(int i=0; i<a2.length(); i++)    {        printf("array a2[%d]: %d\n", i, a2.getData(i));    }    if (a3==a1)    {        printf("相等\n");    }    else    {        printf("不相等\n");    }    Array a4;    a4=a3 = a2; //执行=操作    for(int i=0; i<a3.length(); i++)    {        printf("array a3[%d]: %d\n", i, a3[i]);        printf("array a4[%d]: %d\n", i, a3[i]);    }    system("pause");    return 0;}
0 0