【运算符重载-数组类运算的实现】
2016-05-26 20:00
399 查看
/* Copyright (c) 2016* All rights reserved 烟台大学计算机与控制工程学院 * 文件名称:3.cpp * 作者:刘丽 * 完成日期:2016年 5 月 24日 * 版本号: v1.0 【项目-数组类运算的实现】 设计数组类Array,为了实现测试函数中要求的功能,请补足相关的函数(构造、析构函数)和运算符重载的函数。 实现策略提示:可以将测试函数中的语句加上注释,取消一句的注释,增加相应的函数,以渐增地实现所有的功能,避免全盘考虑带来的困难。 */ #include<iostream> #include <cassert> using namespace std; class Array { private: int* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数) public: //成员函数声明 Array(int s = 50); Array (int a[],int); Array(const Array &a); Array operator+(const Array &b); void show(); void resize(int ); int &operator[](int); const int &Array::operator[] (int) const; Array &operator = (const Array &a2); }; Array::Array(int s) { size=s; list=new int [size]; } Array &Array::operator = (const Array& a) { if (&a != this) { if (size != a.size) { delete [] list; size = a.size; list = new int[size]; } for (int i = 0; i < size; i++) list[i] = a.list[i]; } return *this; } Array::Array (int a[],int s) { size=s; list=new int[size]; for(int i=0;i<size;++i) list[i]=a[i]; } 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 &b) { Array t(size); for(int i=0;i<size;++i) t.list[i]=list[i]+b.list[i]; return t; } void Array:: show() { for(int i=0;i<size;++i) cout <<list[i]<<" "; cout<<endl; } void Array:: resize(int s) { int *newlist; int i; if(size==s) return; size=s; newlist=new int [size]; int n = (s < size) ? s: size; for( i=0;i<n;++i) newlist[i]=list[i]; delete []list; list=newlist; } int &Array::operator[] (int n) { assert(n >= 0 && n < size); return list ; } const int &Array::operator[] (int n) const { assert(n >= 0 && n < size); return list ; } //要求测试函数能够运行出正确、合理的结果: 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; }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android Native 绘图方法
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- C#中struct和class的区别详解
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数