在 C++ 中,可以通过重载 operator[]
来实现数组或容器的访问操作符。以下是一个示例,演示了如何重载 operator[]
以实现一个简单的类 MyArray
的访问操作符:
#include <iostream>
class MyArray {
public:
// 构造函数
MyArray(int size) : size_(size), data_(new int[size]) {}
// 析构函数
~MyArray() { delete[] data_; }
// 重载 operator[] 以实现访问操作符
int& operator[](int index) {
if (index < 0 || index >= size_) {
throw std::out_of_range("Index out of range");
}
return data_[index];
}
// 重载 operator[] 以实现常量访问操作符
const int& operator[](int index) const {
if (index < 0 || index >= size_) {
throw std::out_of_range("Index out of range");
}
return data_[index];
}
private:
int size_;
int* data_;
};
int main() {
MyArray arr(5);
// 使用重载的 operator[] 设置和获取元素值
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
// 输出元素值
std::cout << "arr[0] = " << arr[0] << std::endl;
std::cout << "arr[1] = " << arr[1] << std::endl;
std::cout << "arr[2] = " << arr[2] << std::endl;
std::cout << "arr[3] = " << arr[3] << std::endl;
std::cout << "arr[4] = " << arr[4] << std::endl;
return 0;
}
在这个示例中,我们定义了一个名为 MyArray
的类,它包含一个整数数组 data_
和一个表示数组大小的整数 size_
。我们重载了 operator[]
以实现访问操作符,使得可以通过 arr[index]
语法来访问数组元素。同时,我们还重载了常量版本的 operator[]
,以便在常量对象上使用。
注意,为了确保数组访问的安全性,我们在重载的 operator[]
中添加了边界检查,并在索引超出范围时抛出 std::out_of_range
异常。