C++ Logo
C++二级在线二级在线
首页选择题程序题成为会员帮助其他科目

越界之谜

请修改编辑器中的代码,完成以下功能:程序中定义了一个动态数组类 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;
}

控制台

调试终端

准备就绪