运算符重载的小项目展示

array.h

#ifndef _ARRAY_H_
#define _ARRAY_H_


class myarray
{
public:
myarray(int length);
myarray(const myarray&obj);
int length();
void setdata(int index, int value);
int getdata(int index);
~myarray();
protected:
private:
int mlength;
int *mspace;
public:
int& operator[](int i);
myarray& operator=(myarray &a1);//支持连等,返回一个引用当左值。


};
#endif


array.cpp

#include "iostream"
using namespace std;
#include"array.h"


myarray::myarray(int length)
{
if (length < 0)
{
length = 0;
}
mlength = length;
mspace = new int[length];
}
int & myarray::operator[](int i)
{
return mspace[i];
}
myarray& myarray::operator=(myarray &a1)
{
int i = 0;
if (this->mspace != NULL)
{
delete[]mspace;
this->mlength = 0;
}
this->mlength = a1.mlength;
this->mspace = new int[a1.mlength];
for (i = 0; i < this->mlength; i++)
{
mspace[i] = a1[i];
}
return *this;


}


myarray::myarray(const myarray& obj)
{
if (mspace != NULL)
{
delete[]mspace;
this->mlength = 0;
}
mlength = obj.mlength;
mspace = new int[mlength];
for (int i = 0; i < mlength; i++)
{
mspace[i] = obj.mspace[i];
}


}


int myarray::length()
{
return mlength;
}
void myarray::setdata(int index, int value)
{
mspace[index] = value;
}


int myarray::getdata(int index)
{
return mspace[index];
}
myarray::~myarray()
{
mlength = -1;
delete[]mspace;
}


mytest.cpp

#include "iostream"
using namespace std;
#include"array.h"


int main()
{
myarray a1(10);

for (int i = 0; i < a1.length(); i++)
{
//a1.setdata(i,i);
//a1.operator[] = i;
a1[i] = i;
}
for (int i = 0; i < a1.length(); i++)
{
printf("array %d:%d\n",i,a1[i]);
//a1.setdata(i, i);
}

myarray a2 = a1;


for (int i = 0; i < a2.length(); i++)
{
printf("array %d:%d\n", i, a2.getdata(i));
//a1.setdata(i, i);
}

myarray a3(20);
a2=a3 = a1;
for (int i = 0; i < a3.length(); i++)
{
printf("array %d:%d\n", i, a3[i]);
//a1.setdata(i, i);
}


system("pause");
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值