您的位置:首页 > 其它

第十二周上机实践——项目3-数组类运算的实现

2016-05-18 18:07 316 查看
/*
*Copyright (c)2016,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:main.cpp
*作    者:郭永恒
*完成日期:2016年5月18日
*版 本 号:v1.0
*
*问题描述:设计数组类Array,实现测试函数中要求的功能,补足相关的函数
*/
#include <iostream>
using namespace std;
class Array
{
public:
//构造函数
Array():list(nullptr),size(0){};
Array(int *ar,int len):size(len)
{
list = new int[size];
for(int i = 0; i < len; ++i)
list[i] = ar[i];
}
Array(const Array&);
//下标运算符
int& operator[](int n)
{ return list
;}
const int& operator[](int n) const
{ return list
;}
//赋值运算符
Array& operator=(const Array& arr);
//合并数组
Array operator+(const Array& arr);
void resize(int n);
void show();
~Array(){delete [] list;}
private:
int *list;
int size;
};

Array::Array(const Array& arr)
{
if(list != nullptr)
delete list;
size = arr.size;
list = new int[size];
for(int i = 0; i < size; ++i)
list[i] = arr[i];
}

Array Array::operator+(const Array& arr)
{
int i;
int len = this->size+arr.size;
int *t = new int[len];
for(i = 0; i < this->size; ++i)
t[i] = (*this)[i];
for(int j = 0; j < arr.size; ++i,++j)
t[i] = arr[j];
Array temp(t,len);
delete [] t;
return temp;
}

Array& Array::operator=(const Array& arr)
{
if(this != &arr)
{
if(list != nullptr)
delete [] list;
size = arr.size;
list = new int[size];
for(int i = 0; i < size; ++i)
list[i] = arr[i];
return *this;
}
return *this;
}

void Array::resize(int n)
{
if(list == nullptr)
{
list = new int
;
size = n;
return ;
}
else
{
int *temp = new int
;
for(int i = 0; i < size; ++i)
temp[i] = list[i];
delete list;
list = temp;
size = n;
return ;
}
}

void Array::show()
{
for(int i = 0; i < size; ++i)
cout << list[i] << " ";
cout << endl;
return ;
}

int main()
{
int a[8] = {1,2,3,4,5,6,7,8};
int b[8] = {10,20,30,40,50,60,70,80};
Array array1(a,8),array3,array4;
const Array array2(b,8);
array4 = array3 = array1 + array2;
array3.show();
array4.resize(20);
array4[8] = 99;
cout << array4[8] << endl;
cout << array2[3] << endl;
return 0;
}


运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: