第十二周上机实践——项目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; }
运行结果:
相关文章推荐
- html中的滚动标签
- Android Studio 中的 gradle 详解
- tp框架总结(三)
- vsphere windows2008 server 宕机问题
- 深入boost的asio框架
- 核范数以及低秩RPCA
- BootStrap的使用文档
- Android中getLocationOnScreen和getLocationInWindow
- 点赞 数据库设计
- Sql Server使用技巧
- Swift专题讲解十四——继承
- VS2013 预定义的宏
- POI和jxl写入效率
- jboss-eap-6 数据库用户加密访问
- MySql删除表
- Framework开发指南 四
- mac os x x64安装java7以及卸载的方法
- 第10.11周项目5--摩托车继承自行车和机动车
- 【安卓笔记】touch事件的分发和消费机制
- Linux 常用C函数说明-内存及字符串操作篇