重载的问题

angelanpan 2005-05-16 01:01:29

在《The C++ Programming Language》P295 Line25

class String{
//...

Cref operator[](int i){ check(i); return Cref(*this ,i); }
char operator[](int i) const{ check(i); return rep->s[i];}
};

这里应该是对operator[]重载了,可是参数是相同的,不相同的地方就是返回类型和一个是const一个是非const的,又由于返回类型是不能作为重载的依据的,那么就是说有没有const可以重载落?

这里怎么解释啊

不知道我说清楚没有
...全文
87 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oyljerry 2005-05-16
  • 打赏
  • 举报
回复
明确规定了const可以用来进行重载
jerry 2005-05-16
  • 打赏
  • 举报
回复
有没有const 是两个不同的函数.所以可以重载. 因为这个 const 是 修饰的 this 指针, this 是成员函数的一个隐含的参数, 既然参数不一样,根据规则, 这两个函数的定义是不同的,也就可以重载
crs_zxf 2005-05-16
  • 打赏
  • 举报
回复
在类中是可以用const来区分两个不同的成员函数的。
当声明一个const类对象时调用const版本的成员函数。
当声明一个非const 类对象时调用非const版本的成员函数。
junguo 2005-05-16
  • 打赏
  • 举报
回复
可以重载,在定义常量对象后,如const A a;那么a只能调用常量函数。
不是常量对象的话,它会调用一般的函数,而不是常量函数!
xzgyb 2005-05-16
  • 打赏
  • 举报
回复
c++有个规定
就是
常量成员函数可以进行重载
也就是
class A
{
void p(){}
void p() const {}

}
是被允许的

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧