注册 登录
编程论坛 C++教室

运算符重载

best218 发布于 2007-05-18 22:03, 525 次点击

//subscript operator for non-const objects returns modifiable lvalue
int &operator[]( int );

//subscript operator for const objects returns rvalue
int operator[]( int ) const;

按重载函数的规则,这两个函数是不能通过编译的。但是在C++ How to Program,fifth Edition作者Deitel在11.8(p 583)节中的这个例子却给出了运行结果,让我莫名奇妙。我在Dev-C++和Visual studio 2005中都提示重载函数错误。不知道Deitel用的是什么编译器?

我认为是程序错误。

5 回复
#2
aipb20072007-05-19 01:08
按函数重载规则,这是可以的!

仅对于引用型参和指针型参,可以用const修饰来重载。
这里const修饰的是隐式型参this,所以OK!

再看看书吧!
#3
best2182007-05-20 16:47
回复:(aipb2007)按函数重载规则,这是可以的![em0...

谢谢了

可编译总是通不过是什么原因呢?
编译器gcc 3.4.2

#4
aipb20072007-05-20 17:22
怎么会通不过呢?是不是代码的上下文有错?

还有问题弄出来,大家讨论!
#5
best2182007-05-21 00:01
回复:(aipb2007)怎么会通不过呢?[em01]是不是代码...
array.是类声明
array.cpp实现方法
fig11_08.cpp是测试主程序
#6
best2182007-05-21 00:03
上传的附件怎么看不到呢?
1