解引用操作符重载?

sagegz 2012-02-10 04:40:32

struct Node
{
double item;
Node * p_next;
};
class iterator
{
Node * pt;
public:
iterator() : pt(0) {}
iterator (Node * pn) : pt(pn) {}
double operator*() { return pt->item;} //解引用操作符重载为什么是这样子?
//...
};

如果是这样重载的话,
定义一个iterator的对象后,比如iterator it;
那么调用的时候不就是it.operator*(),简略后就是it*,为什么使用的时候是*it?
...全文
169 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamnobody 2012-02-10
  • 打赏
  • 举报
回复
double operator*() { return pt->item;} //解引用操作符重载为什么是这样子?

==
根据语意,应该是返回iterator 指向的list 的节点的数据(不包括那个指针)。



那么调用的时候不就是it.operator*(),简略后就是it*,为什么使用的时候是*it?
===
规定。。。。*(解引用操作符)的操作数在右边。。。
RabbitLBJ 2012-02-10
  • 打赏
  • 举报
回复
同楼上

另外解引用怕是应该返回一个引用吧,不然怎么做左值被修改?
老邓 2012-02-10
  • 打赏
  • 举报
回复
语法规定

64,318

社区成员

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

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