项目36-数组类运算的实现
来源:互联网 发布:网络爬虫 登陆 编辑:程序博客网 时间:2024/05/29 09:25
设计数组类Array,为了实现测试函数中要求的功能,请补足相关的函数(构造、析构函数)和运算符重载的函数。 实现策略提示:可以将测试函数中的语句加上注释,取消一句的注释,增加相应的函数,以渐增地实现所有的功能,避免全盘考虑带来的困难。class Array{private: int* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数)public: //成员函数声明};//要求测试函数能够运行出正确、合理的结果: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;}运行代码:
#include <iostream>#include <iomanip>#include <cassert>using namespace std;class Array{private: int* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数)public: Array(int s = 50); Array(int a[], int s); Array(const Array &a); ~Array(); Array operator + (const Array &a1); Array &operator = (const Array &a1); int &operator[] (int i); const int &operator[] (int i) const; void resize(int s); void show() const;};Array::Array(int s){ assert(s >= 0); size = s; list = new int [size];}Array::Array(int a[], int s){ assert(s >= 0); size = s; list = new int [size]; for (int i = 0; i < size; ++i) list[i] = a[i];}Array::~Array(){ delete [] list;}Array::Array(const Array &a){ size = a.size; list = new int[size]; for (int i = 0; i < size; ++i) list[i] = a.list[i];}Array Array::operator + (const Array &a1){ assert(size == a1.size); Array sum(size); for (int i = 0; i < size; ++i) sum.list[i] = list[i]+a1.list[i]; return sum;}Array &Array::operator = (const Array& a1){ if (&a1 != this) { if (size != a1.size) { delete [] list; size = a1.size; list = new int[size]; } for (int i = 0; i < size; ++i) list[i] = a1.list[i]; } return *this;}int &Array::operator[] (int n){ return list[n];}const int &Array::operator[] (int n) const{ return list[n];}void Array::resize(int s){ if (s == size) return; int *newList = new int [s]; int n = (s < size) ? s : size; for (int i = 0; i < n; i++) newList[i] = list[i]; delete[] list; list = newList; size = s;}void Array::show() const{ for (int i = 0; i < size; i++) cout<< list[i]<<" "; cout<<endl;}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;}
运行结果:
学习心得:编写的时候因为一点疏忽,掉了一个“&”,导致调用show函数时,返回的是数组的地址。另外通过度娘学会了assert函数,判断条件是否成立,不成立结束运行下面的代码。
0 0
- 项目36-数组类运算的实现
- 项目3-数组类运算的实现
- 十二周项目四 数组类运算的实现
- 第十二周项目 数组类运算的实现
- 第十二周项目3-数组类运算的实现
- 第12周项目3:数组类运算的实现
- 第十二周实践项目3-数组类运算的实现
- 第12周项目3 数组类运算的实现
- 第十二周项目3—数组类运算的实现
- 第十二周项目——数组类运算的实现
- 第12周项目3-数组类运算的实现
- 第十二周项目三-数组类运算的实现
- 第十二周项目3-数组类运算的实现
- 第12周项目3:数组类运算的实现
- 第12周项目3-数组类运算的实现
- 第十二周项目3—数组类运算的实现
- 第12周项目3-数组类运算的实现
- 第十二周项目三-数组类运算的实现
- Lowest Common Ancestor of a Binary Search Tree
- HDU1241 深搜
- NYOJ Rectangles--1255第七届
- 机房收费系统总结篇(一)
- linux内核打补丁步骤
- 项目36-数组类运算的实现
- poj 2823 Sliding Window
- 如何对齐多个对象
- UIView
- 【HDU】 1211 RSA
- ActionBar
- 最近遇到.net framework安装不上问题1603问题号,原来是360捣鬼
- java教程:Java编程风格与命名规范整理
- 【C++】heap corruption detected错误调试总结及拓展