第二节 · 换一种走路的方式 · 递增递减运算符定义
下标运算符 [] 和函数调用运算符 () 是两个特殊的运算符,它们让对象可以像数组或函数一样使用。
下标运算符 []
class Array
{
private:
int data[100];
public:
// 返回引用,允许读写
int& operator[](int index)
{
return data[index];
}
// const 版本,只读
const int& operator[](int index) const
{
return data[index];
}
};
int main()
{
Array arr;
arr[0] = 42; // 调用非 const 版本
cout << arr[0] << endl;
const Array& ref = arr;
cout << ref[0] << endl; // 调用 const 版本
// ref[0] = 1; // 错误:const 不能修改
return 0;
}带边界检查的下标
多维下标
函数调用运算符 ()
重载 () 的对象称为函数对象或仿函数(functor)。
函数对象与 STL
带状态的函数对象
函数对象 vs lambda
标准函数对象
用 [] 实现映射查找
习题
实现一个
String类,支持[]访问字符。创建一个多项式类,用
()计算给定 x 的值。比较函数对象和 lambda 的优缺点。
Last updated