15周项目一(建立专门的数组类处理有关数组的操作)
来源:互联网 发布:佛教闭关可以有网络吗 编辑:程序博客网 时间:2024/06/07 05:19
/* *程序的版权和版本声明部分 * Copyright (c)2013, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称:MyArray .cpp * 作 者: 田凤 *完成日期:2013年6月14日 * 版本号: v1.0 * 输入描述: 略 * 问题描述:略 * 输出:略*代码:#include<iostream>#include <cstdlib>using namespace std;class MyArray{private: int *arr;//用于存放动态分配的数组内存首地址 int size;//数组大小public: MyArray(int sz=50); MyArray(int a[],int sz);//由一个内置类型的数组初始化 MyArray(const MyArray &A);//复制构造函数 ~MyArray(void); //析构函数,注意释放空间 MyArray&operator =(const MyArray &A); //重载“=”使得数组对象可以整体赋值 bool operator == (MyArray& A); //重载==,使得Array对象能整体判断两个数组是否相等(size相等且对应元素相等) friend ostream& operator << (ostream& out,MyArray& A); //重载<<,输出数组 int GetSize(void) const; //取数组大小;};MyArray::MyArray(int sz){ if(sz<=0) { cout<<"invalid Array Size!"; exit(1); } size=sz; //将元素个数赋值给变量size arr=new int[size]; //动态分配内存,将size个int类型的元素空间分配出来 for(int i=0; i<size; ++i) *(arr+i)=0;}MyArray::MyArray(int a[],int sz){ if(sz<=0) { cout<<"invalid Array Size"; exit(1); } size=sz;//将元素个数赋值给变量size arr=new int[size];//动态分配内存,将size个int类型的元素空间分配出来 for(int i=0; i<size; ++i) *(arr+i)=*(a+i);}MyArray:: MyArray(const MyArray &A){ //从对象A取得数组大小,并赋给当前对象成员 int n=A.size; size=n; //为对象申请内存并进行出错检测 arr=new int[n]; //从对象A复制数组元素到本对象 int *srcptr=A.arr;//X.arr是对象A的数组首地址 int *destptr=arr;//arr是本对象中的数组首地址 while(n--) { *destptr=*srcptr; destptr++; srcptr++; }}MyArray::~MyArray(void)//析构函数{ if (!arr) delete [] arr;}MyArray& MyArray::operator =(const MyArray &A)//重载赋值运算'='{ int n=A.size;//取A数组的大小 //如果本对象中的数组大小和A不同,则删除数组原有的内存,然后重新分配 if (size!=n) { delete []arr; arr=new int[n]; size=n; } //从rhs向当前对象复制元素 int* destptr=arr; int* srcptr=A.arr; while(n--) { *destptr=*srcptr; destptr++; srcptr++; } return *this;//返回当前对象的引用}bool MyArray::operator == (MyArray& A){ bool eq=true; int n=A.size; //取A数组的大小 if (size!=n) //大小不一致,数组一定不相等 { eq=false; } else { int* destptr=arr; int* srcptr=A.arr; while(n--) { if(*destptr!=*srcptr) { eq=false; //其中有一个元素不相等,则数组也不相等 break; } destptr++; srcptr++; } } return eq;//返回当前对象的引用}ostream& operator << (ostream& out, MyArray& A){ for (int i = 0; i < A.size; i++) { out<<*(A.arr+i)<<'\t'; } out<<endl; return out;}//取当前数组大小int MyArray::GetSize(void)const{ return size;}int main(){ int a[10]= {1,2,3,4,5,6,7,8,9,10}; int b[10]= {4,5,6,7,8,9,10,11,12,13}; MyArray arr1(a,10); //测试用内置的数组初始化新定义的数组对象 MyArray arr2(b,10); MyArray arr3(10); //测试只指定大小的新数组对象的初始化 cout<<arr1; //测试对<<的重载 cout<<arr2; //测试对<<的重载 cout<<arr3; //测试对<<的重载 cout<<"The size of arr1 is: "<<arr1.GetSize()<<endl; //测试GetSize()成员函数 return 0;}
*运行结果:
*心得体会:有些知识不太懂,还是好好看书吧~~~
- 15周项目一(建立专门的数组类处理有关数组的操作)
- 第十五周项目一 —— 建立专门的数组类处理有关数组的操作
- 第十五周 项目一:建立专门的数组类处理有关数组的操作
- 第十五周上机任务项目1-建立专门的数组类处理有关数组的操作
- 第14周任务1(建立专门的数组类处理有关数组的操作)
- 第十四周 任务一 建立专门的数组类处理有关数组的操作
- 《第十四周任务一》建立专门的数组类处理有关数组的操作
- 第十五周上机任务项目1-2建立专门的数组类处理有关数组的操作
- 第十五周—1.建立专门的数组类处理有关数组的操作
- 第十四周实验--任务1--建立专门的数组类处理有关数组的操作
- 第十四周任务1建立专门的数组类处理有关数组的操作
- C++第十四周【任务1】 建立专门的数组类处理有关数组的操作
- 建立专门的数组类处理有关数组的操作+扩展1
- C++第十四周【任务1】 建立专门的数组类处理有关数组的操作(加强版)
- 请教一下 贺老师。 第十四周C++【任务1】建立专门的数组类处理有关数组的操作
- 《C++第十四周实验报告1-1》---建立专门的数组类处理有关数组的操作
- 十四周【任务1】建立专门的数组类处理有关数组的操作数组是几乎所支持的组织数据的方法。
- 第十五周上机任务项目2-建立专门的链表类处理有关动态链表的操作
- 旧题在做涨工资
- 对Linux的进程内核栈的认识
- Tomcat指定JDK, 同时跑多个tomcat
- java的网络编程
- oracle 基本概念
- 15周项目一(建立专门的数组类处理有关数组的操作)
- 关于堆栈
- 针对"不重新发送信息,则无法刷新网页。"的终极解决方法。(php&java范例)
- 高手分享:轻松搞定硬盘“HDD Not Detected”错误提示【xiame.com】
- javascript调用apex class类
- 敏捷开发一千零一问系列之三十四:如何弄清楚项目需求(需求开发步骤)?
- Android开发学习笔记:浅谈WebView
- flex中使用设备和嵌入字体
- 笔记3:透视投影变换(perspective projection)