第14章 重载操作符与转换(4)
14.4 赋值操作符
Class1& operator=(int i)
{
counter = i;
return *this;
}
赋值操作符可以重载。无论形参为何种类型,赋值操作符必须定义为成员函数,这一点与复合赋值操作符有所不同。
复制必须返回对*this的引用。
一般而言,复制操作符与复合赋值操作符应返回左操作数的引用。
14.5 下标操作符
下标操作符必须定义为类成员函数
1. 提供读写访问
定义下标操作符比较复杂的地方在于,它在用作赋值的左右操作数时都应该能表现正常。下标操作符出现在左边,必须生成左值,可以指定引用作为返回类型而得到右值。只要下标操作符返回引用,就可用作赋值的任意一方。
可以对const和非const对象使用下标也是个好主意。应用于const对象时,返回值应为const引用,因此不能用作赋值的目标。
类定义下标操作符时,一般需要定义两个版本:一个为非const成员并返回引用,另一个为const成员并返回const引用。
2.原型下标操作符
class Foo
{
public:
Foo(int len)
{
vec = vector<int>(len);
}
int &operator[](const size_t index)
{
return vec[index];
}
const int &operator[](const size_t index) const
{
return vec[index];
}
private:
vector<int> vec;
};
摘自 xufei96的专栏
补充:软件开发 , C++ ,