已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重载的运算符[ ]要对下标是否越界进行检查
时间: 2024-02-05 07:12:16 浏览: 23
下面是ARRAY类的定义示例,包含了重载运算符[]来实现下标越界检查:
```cpp
template <typename T>
class ARRAY{
private:
T* arr; //存放数组元素的指针
int size; //数组大小
public:
ARRAY(int s){
if(s <= 0){
throw std::out_of_range("数组大小必须大于0!");
}
arr = new T[s]; //分配空间
size = s;
}
~ARRAY(){
delete[] arr;
}
int getSize(){
return size;
}
//重载运算符[],对下标是否越界进行检查
T& operator[](int index){
if(index < 0 || index >= size){
throw std::out_of_range("数组下标越界!");
}
return arr[index];
}
};
```
在上述代码中,我们使用了模板来定义了一个ARRAY类,可以存储任意类型的元素。在构造函数中,我们首先判断了数组大小是否小于等于0,如果是,则抛出std::out_of_range异常。在析构函数中,我们释放了arr指向的内存空间。在getSize()函数中,我们返回了数组大小。在重载运算符[]中,我们首先对下标是否越界进行了检查,如果是,则抛出std::out_of_range异常,否则返回对应下标的元素。这样,我们就实现了对下标越界的检查。