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

相关推荐

ming_ri:“很抱歉,您的简历和我们当前的职位需求不是很匹配”
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客企业服务