August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
到目前为止(12.6节),我们已经使用过成员函数set()和get()访问vector的元素,但这种用法冗长、不美观。我们希望能够使用习惯的下标表示方式v[i]。为此,我们需要定义一个名为operator[]的成员函数。下面是我们的初次(简单)尝试:
这个定义看起来令人满意而且很简单,但不幸的是它过于简单了。下标操作(operator[]())返回一个值,因此只能实现对元素的读操作而未实现写操作:
在这段代码中,v[i]被解释为函数调用v.operator[](i),返回v的编号为i的元素的值。对于过于简单的vector,v[3]是一个浮点类型的数值,而不是一个浮点类型的变量。
试一试
编写此版本vector的完整实现,使之能进行编译,并观察编译器对语句“v[3]=x;”会报告怎样的错误消息。 ...