C++重载[](下标运算符)
在 C++ 中,数组可以通过下标操作符
重载
注意,下标运算符重载函数只能有一个参数,且只能以成员函数的方式,而不能采用全局函数(友元)的方式。
【实例】创建一个名为 CustomArray 的类,用于存储整数数据,通过重载
[ ]来访问内部保存的元素。同样地,通过重载[ ]运算符,使得自定义的类也能够像数组一样使用索引来访问元素重载
[ ]下标运算符的格式如下:
ReturnType &operator[](IndexType index) {
// 这里编写根据索引访问元素的逻辑
// 返回对应的元素引用
}
ReturnType 是希望返回的元素类型,通常是该目标成员类型的引用;IndexType 是索引的类型,可以是整数类型,枚举等。注意,下标运算符重载函数只能有一个参数,且只能以成员函数的方式,而不能采用全局函数(友元)的方式。
【实例】创建一个名为 CustomArray 的类,用于存储整数数据,通过重载
[ ]运算符,便于通过索引访问数组中的元素。
#include <iostream>
class CustomArray {
private:
int data[10]; // 假设数组长度为10
public:
// 重载下标运算符
int &operator[](int index) {
if (index < 0 || index >= 10) {
// 处理越界情况
std::cout << "Index out of bounds!" << std::endl;
// 返回一个合适的默认值,或者抛出异常
return data[0];
}
return data[index];
}
};
int main() {
CustomArray arr;
for (int i = 0; i < 10; ++i) {
arr[i] = i * 2; // 赋值操作
}
for (int i = 0; i < 12; ++i) {
std::cout << "arr[" << i << "] = " << arr[i] << std::endl; // 访问操作
}
return 0;
}
运行结果为:
arr[0] = 0
arr[1] = 2
arr[2] = 4
arr[3] = 6
arr[4] = 8
arr[5] = 10
arr[6] = 12
arr[7] = 14
arr[8] = 16
arr[9] = 18
Index out of bounds!
arr[10] = 0
Index out of bounds!
arr[11] = 0
[ ],main() 函数中演示了如何使用重载的下标运算符来赋值和访问元素。总结
通过重载下标运算符[ ],可以在自定义的类中像数组一样用索引来访问类的成员,增强了类的灵活性和易用性。
ICP备案:
公安联网备案: