c++ STL的list中->运算符重载的问题

按我的理解是list中->重载是通过调用*重载实现的,代码如下:
template <class T>
struct node
{
    typedef void* void_pointer;
    void_pointer prev;
    void_pointer next;
    T data;
};
reference operator*() const {
    return ((*node).data);
}
pointer operator->() const {
    return &(operator*());
}
按理说operator *()返回的应该是(*node).data,在->重载中返回的&(operator*())是data的地址,按理说不应该是返回整个结构体的地址才对?不是很明白,希望有大佬可以指点下,谢谢啦!

#C/C++#
全部评论
&(operator*()) 里面的 operator*() ==  (*node).data,也就是节点所对应的数据了,如果是*node就是整个节点,这里的*node.data就是一个单另的节点数据,所以返回的是data的地址而非结构体的地址
点赞 回复 分享
发布于 2020-05-25 20:26

相关推荐

03-27 17:33
门头沟学院 Java
代码飞升:同学院本,你要注意hr当天有没有回复过,早上投,还要打招呼要推销自己,不要一个劲投
点赞 评论 收藏
分享
好兄弟们,不愁找不到工作了,东哥还有10万骑手HC待发&nbsp;还有五险一金,话不多说我要去投递了
婉拒腾讯保洁岗:都让让,鄙人骑电动车贼溜,ssp骑手offer应该有我一份吧?在坐的谁赞同,谁反对?查看图片
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务