可自定义数组元素个数的数组类的设计

来源:互联网 发布:windows搜索索引 编辑:程序博客网 时间:2024/06/11 15:36

可自定义数组元素个数的数组类的设计

设计数组类Array,重载赋值运算符和数组界标运算符[],设计成员函数Resize重置数组元素的个数。改程序可以根据需要自定义数组下标的上下限,并可以对数组下标越界进行检查。

#include <iostream>#include <fstream>using namespace std;class Array{private:    double *aptr;    int size;    int start_s;    int last_s;public:    Array(int n1,int n2);    ~Array();    void operator=(const Array &a);    double & operator [](int arr_no)const;    void Resize(int re_start_s,int re_last_s);    void displaya()const;    void displayb()const;};Array::Array(int n1,int n2):start_s(n1),last_s(n2){    size=n2-n1+1;    aptr=new double[size+1];    cout<<"请输入数组元素:"<<endl;    for(int i=0;i<size;i++)        cin>>aptr[i];}Array::~Array(){}void Array::operator=(const Array &a){    size=a.size;    start_s=a.start_s;    last_s=a.last_s;    aptr=a.aptr;}double & Array::operator[](int arr_no)const{    if(arr_no<start_s||arr_no>last_s)        throw string("out of bounds");    return aptr[arr_no-start_s];}void Array::Resize(int re_start_s,int re_last_s){    double *ap;    start_s=re_start_s;    last_s=re_last_s;    size=re_last_s-re_start_s+1;    ap=new double[size+1];    ap=aptr;    delete[]aptr;}void Array::displaya()const{    for(int i=0;i<size;i++)    cout<<"a["<<(start_s+i)<<"]="<<*(aptr+i)<<'\t';    cout<<endl;}void Array::displayb()const{    for(int i=0;i<size;i++)        cout<<"b["<<(start_s+i)<<"]="<<*(aptr+i)<<'\t';        cout<<endl;}int main(){    Array a(10,15);    cout<<"数组a:"<<endl;    a.displaya();    Array b=a;    cout<<"数组b:"<<endl;    b.displayb();    cout<<"---------------------------"<<endl;    try    {        cout<<"a[11]="<<a[11]<<endl;        a.Resize(0,5);        cout<<"改变数组下标后:"<<endl;        a.displaya();        cout<<"a[11]="<<a[11]<<endl;    }    catch (string s)    {        cerr<<s<<endl;    }    return 0;}
原创粉丝点击