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() 函数中演示了如何使用重载的下标运算符来赋值和访问元素。总结
通过重载下标运算符[ ]
,可以在自定义的类中像数组一样用索引来访问类的成员,增强了类的灵活性和易用性。