读书人

关于重载[]的有关问题

发布时间: 2012-02-14 19:19:19 作者: rapoo

关于重载[]的问题
最近看别人的代码时,发现了如下语句
template < class type >
class idList {
public:
typeoperator[]( int index ) const;
type&operator[]( int index );

};
我想问一下, 这样写有什么作用?
参数列表一样, 这样编译没问题吗?


[解决办法]
第一个是常量版的,当定义类idList的对象const时,操作[]时调用常量版的.
第二个是非常量版的,当定义类idList的一般对象时,操作[]时调用这个.
[解决办法]
当你的idList实例在表达式中是左值时调用
type&operator[]( int index );
例如:
idList <int> IDs;
IDs[8] = 88;

右值时调用
typeoperator[]( int index ) const;
例如:
idList <int> IDs;
int a = IDs[8];

读书人网 >C++

热点推荐