关于vs2019 c++ STL 中容器的迭代器的 -> 运算符的使用,以 list 双向链表为例

(1)如下的结构体 A ,若有指针 p = new A() ;则可以使用 p->m , p->n 解引用运算符。
struct A { int m ; int n; }

对于 STL 中提供的迭代器,提供了类似于指针的功能。对迭代器也可以使用 -> 运算符来访问容器中元素对象里的成员。这个功能是由 STL 库大师的源代码实现的,如下图(以 list 容器的迭代器为例):

(2)那么 函数 pointer_to 做了哪些事情呢?以下给出其源码:

可见 ,pointer_to 只是解析了其形参的内存地址。对于全局函数 addressof 就不再展开了,见名知意,就是求形参的地址。

这也符合我们对指针的理解。只要通过指针拿到了对象的首地址,就可以用偏移量来访问类对象中的各个数据成员和函数。

(3)以下给出简单例子的反汇编,看看实际上代码是否是沿以上分析的执行路径:

对应的反汇编代码如下:

在调试中执行反汇编代码,按 F10 ,得输出结果如下:

再来一幅:

谢谢阅读

相关推荐
70asunflower27 分钟前
CUDA编程指南基础知识点总结(5)
c++·人工智能·cuda
mjhcsp3 小时前
C++剪枝解析
c++·剪枝
wregjru3 小时前
【网络】5.HTTP 协议详解与实现
c++
Ralph_Y3 小时前
正则表达式
开发语言·c++·正则表达式
钓鱼的肝3 小时前
[GESP-4.2503.T2]二阶矩阵
c++·算法·矩阵
小小unicorn3 小时前
[微服务即时通讯系统]文件存储子服务的实现与测试
c++·redis·微服务·云原生·架构
草莓熊Lotso3 小时前
MySQL 数据库基础入门:从概念到实战
linux·运维·服务器·数据库·c++·人工智能·mysql
HalvmånEver3 小时前
6.高并发内存池的内存释放全流程
开发语言·c++·项目学习··高并发内存池
OxyTheCrack3 小时前
【C++】简述Observer观察者设计模式附样例(C++实现)
开发语言·c++·笔记·设计模式
小小unicorn3 小时前
[微服务即时通讯系统]3.服务端-环境搭建
数据库·c++·redis·微服务·云原生·架构