-数组类模板
2016-06-16 19:40
274 查看
/* Copyright (c) 2016* All rights reserved 烟台大学计算机与控制工程学院 * 文件名称:3.cpp * 作者:刘丽 * 完成日期:2016年 6 月 15日 * 版本号: v1.0 【项目-数组类模板】 在数组类的基础上,将之改造为类模板,以使数组中可以存储各种类型的数据。 template <class T> //数组类模板定义 class Array { private: T* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数) ... }; */ #include<iostream> #include<cassert> using namespace std; template <class T> //数组类模板定义 class Array { private: T* list; //用于存放动态分配的数组内存首地址 int size; //数组大小(元素个数) public: Array(){}; Array(int sz); Array(const Array<T> &t); ~Array(); void rsize(int sz); void display(); T &operator [](int ); Array<T> &operator = (const Array<T>& rhs); }; template <class T> Array<T>::Array(int sz) { assert(sz>=0); size=sz; list=new T [size]; for(int i=0;i<size;i++) list[i]=i; } template <class T> Array<T>::Array(const Array<T> &t) { T* l; l=new T [t.size]; for(int i=0;i<t.size;i++) l[i]=t.list[i]; list=l; size=t.size; } template <class T> Array<T>::~Array() { delete []list; } template <class T> void Array<T>::rsize(int sz) { assert(sz>=0); T* l; l=new T [sz]; for(int i=0;i< (size=(size>sz)?sz:size);i++) l[i]=list[i]; delete []list; list=l; size=sz; } template <class T> T &Array<T>::operator [](int i) { assert(i >= 0 && i < size); return list[i]; } template <class T> Array<T> &Array<T>::operator = (const Array<T>& rhs) { if (&rhs != this) { //如果本对象中数组大小与rhs不同,则删除数组原有内存,然后重新分配 if (size != rhs.size) { delete [] list; //删除数组原有内存 size = rhs.size; //设置本对象的数组大小 list = new T[size]; //重新分配n个元素的内存 } //从对象X复制数组元素到本对象 for (int i = 0; i < size; i++) list[i] = rhs.list[i]; } return *this; //返回当前对象的引用 } template <class T> void Array<T>::display() { for(int i=0;i<size;i++) cout<<list[i]<<" "; cout<<endl; } int main() { Array<int> a(10); Array<int> b(a); cout<<"a:"<<endl; a.display(); cout<<"b:"<<endl; b.display(); a.rsize(11); a.display(); a[10]=b[9]; a.display(); 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函数