C++程序设计题:利用类设计一个安全一维整数型数组类-创新互联

碰见了一道有趣的题目:

为北仑等地区用户提供了全套网页设计制作服务,及北仑网站建设行业解决方案。主营业务为成都做网站、成都网站制作、北仑网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

数组越界访问是一个难发现且危险性大的事情。利用类设计一个安全一位整数型数组类,该类至少包含三个构造函数:当未指明数组长度时,默认为10元素;也可以按指定元素个数来设定数组等等。当然,在访问数组时应能进行安全识别,同时这一个类还要包含数组间赋值以及数组加运算。最后写出一个主函数来检验他们。

代码如下:
声明:为了能让代码跑起来,写的比较繁琐。笔试中读者能写出伪代码即可,不必照抄。

类的声明:

#includeusing namespace std;


#define default_length 10
//数组默认长度为10

class Array{public:
    Array();
    Array(int size);
    Array(int b[],int len);
    ~Array(){delete[] a;}
    int VisitArray(int n);
    void Add(int b[], int result[],int len);
    void Value(int b[],int len);

    int *a;
    int length;
};

类中函数

函数声明解释
Array()无参构造函数,声明一个数组(10个0元素)
Array(int size)有参构造函数,声明一个数组(size个0元素)
Array(int arr[], int length)有参构造函数,将长度为length的数组b,作为对象的数组。
~Array()析构函数,一个重要的作用是delete掉构造函数中new出的数组
VisitArray(int n)安全访问数组中下标为n的元素。如果越界会返回0,并提示“越界访问”
Add(int b[], int c[], int length)将数组与b数组相加的结果,返回到c数组中。要求三个数组的长度一致。
Value(int b[], int length)b数组赋值到对象的数组中,要求两数组长度一致
Array::Array(){a = new int [default_length];
    if(!a){cout<<"动态空间申请失败"<}
    length = default_length;
    for(int i=0; iif(size<0){cout<<"输入应大于0"<cout<<"动态空间申请失败"<length = len;
    a = new int [length];
    if(!a){cout<<"动态空间申请失败"<if(n<0||n>=length){cout<<"越界访问"<if(length!=len){cout<<"输入的数组长度与本对象的数组长度不符"<if(len!=length){cout<<"输入的数组长度与本对象的数组长度不符"<

用于测试的主函数:

int main()
{int b[3]={1,2,3};
    Array a(b,3);
    int *c= new int[3];
    for(int i=0;i<3;i++)
        c[i]=0;

    //越界访问
    a.VisitArray(3);

    //未越界访问
    int a2=a.VisitArray(2);
    cout<

输出:

越界访问
3
2 4 6
2 4 6


写在最后:
在求数组长度的过程中,C++内并未提供可以直接引用的库函数。
比较普遍的一种方法是sizeof(arr)/sizeof(arr[0]),用整个数组的大小除以单个元素的大小,就是数组内元素个数。
于是我想到,将之封装成一个函数:

int len(int arr[]){return sizeof(arr)/sizeof(arr[0]);
}

正当我沾沾自喜时,发现这个函数返回的结果有误。。。
原来,C++中,将数组作为某个函数的参数传递进去,函数接收的其实是数组的首位地址,也就是一个指针,不再是一个数组。最后自然会算出令人瞠目结舌的数值。
详见此篇:《C++中数组作为函数参数的注意问题》

以及,一维数组类进阶版:《随便写写——C++实现简易整型数组类》

完毕,复习党们继续加油!ヾ(◍°∇°◍)ノ゙祝超常发挥、考出理想的成绩~

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

新闻名称:C++程序设计题:利用类设计一个安全一维整数型数组类-创新互联
文章转载:https://www.cdcxhl.com/article2/cojoic.html

成都网站建设公司_创新互联,为您提供虚拟主机网站营销做网站外贸网站建设动态网站移动网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联