越界之谜
请修改编辑器中的代码,完成以下功能:程序中定义了一个动态数组类 XArray,它重载了下标运算符 [],在下标越界时会输出“下标越界!”并终止程序。 请补充 FF 函数的定义:接收一个 XArray 引用,返回数组的第一个元素;若数组为空则返回 0。注意要通过 length() 先判断长度,再用下标访问,这样才不会触发越界保护。 数组内容和长度已在程序中固定为 {1, 2, 3, 4, 5},程序不需要输入。 输出示例: Array length: 5 First element: 1
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
class XArray { //数组类
int *a;
int size;
public:
XArray(int b[], int len): size(len) //构造函数
{
a=new int[size];
for(int i=0; i<size; i++) a[i]=b[i];
}
int length() const{ return size; } //返回数组长度
int& operator[](int i) { //返回下标为i的元素
if(i<0 || i>=size) {
cout<<"下标越界!"<<endl;
delete []a;
exit(1);
}
return a[i];}
~XArray(){delete []a;}
};
//ERROR**********found**********
int FF(XArray& a); // 请实现FF函数
int main()
{
const int SIZE = 5;
int arr[SIZE] = {1, 2, 3, 4, 5};
XArray myArray(arr, SIZE);
cout << "Array length: " << myArray.length() << endl;
cout << "First element: " << FF(myArray) << endl;
return 0;
}控制台
调试终端
