关闭

十四周项目-项目3-数组类模板

标签: 数组类模板
130人阅读 评论(0) 收藏 举报
分类:
/*copyright(c)2016.烟台大学计算机学院
 * All rights reserved,
 * 文件名称:text.Cpp
 * 作者:刘涛
 * 完成日期:2016年5月30日
 * 版本号:vc++6.0
 * 问题描述: 请为该类增默认构造函数、带两个参数分别
 对应两个数据成员初值的构造函数,以及复制构造函数。
 */
#include <iostream>
#include<cassert>
using namespace std;
template <class T>  //数组类模板定义
class Array
{
private:
    T* list;        //用于存放动态分配的数组内存首地址
    int size;       //数组大小(元素个数)
public:
    Array(T a[],int sz);  //构造函数
    ~Array();//析构函数
    Array(const Array<T>&a);//复制构造函数
    int getSize();//取数组的大小
    void resize(int sz);//修改数组的大小
    void show();
};
template<class T>
Array<T>::Array(T a[],int sz)  //构造函数
{
    assert(sz>=0);//检查数组大小,应当为整数
    size=sz;
    list=new int[size];//动态分配内存
    for (int i = 0; i < size; i++)
    list[i] = a[i];
}
template<class T>
Array<T>::~Array()   //析构函数
{
    delete []list;
}
template<class T>
Array<T>::Array(const Array<T>&a )  //复制构造函数
{
    size=a.size;
    list=new T[size];
    for(int i=0;i<size;i++)
        list[i]=a.list[i];
}
template<class T>//取数组大小
int Array<T>::getSize()
{
    cout<<size<<endl;
}
template<class T>
void Array<T>::resize(int sz)//修改数字大小
{
    assert(sz>=0);
    if(sz=size)
        return ;//什么也不做
    T *newlist=new int[size];
    int n=(sz<size)?sz:size;//将sz和size中较小的一个赋值给n

    for(int i=0;i<n;i++)
        newlist[i]=list[i];
    delete[]list;//删除原数组
    list =newlist;//使list指向原数组
    size=sz;
}
template <class T>
void Array<T>::show()
{
    int i;
        for(i=0;i<size;i++)
        cout<<*(list+i)<<"  ";
}

int main()
{
    int array[10]={5,3,9,4,7,8,6,1,2,10};
    Array <int> a(array,10);

    a.getSize();
    a.resize(15);
    a.getSize();
    a.show();
    return 0;
}
运行结果:
<img src="http://img.blog.csdn.net/20160530202406958?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
问题:
为什么修改数组的函数在主函数里面没有作用啊?
<img src="http://img.blog.csdn.net/20160530202536383?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />排序哪里不对啊,不能顺序输出。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:34281次
    • 积分:1860
    • 等级:
    • 排名:千里之外
    • 原创:158篇
    • 转载:1篇
    • 译文:0篇
    • 评论:8条
    最新评论