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++程序设计题:利用类设计一个安全一维整数型数组类-创新互联
本文路径:http://scyanting.com/article/cojoic.html