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-01 21:45
中北大学 golang
孤蓝长空:请你说一下为什么你用websocket而不是http,请你说一下什么是rpc,为什么用rpc,你的rpc的传输协议是JSON,xml还是什么 请你描述一下你的鉴权流程(完整的) 我问的是第二个项目,随便问的哈哈哈
开工第一帖
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务