关于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 ,得输出结果如下:

再来一幅:

谢谢阅读

相关推荐
博笙困了7 分钟前
AcWing学习——差分
c++·算法
青草地溪水旁39 分钟前
设计模式(C++)详解—抽象工厂模式 (Abstract Factory)(2)
c++·设计模式·抽象工厂模式
青草地溪水旁41 分钟前
设计模式(C++)详解—抽象工厂模式 (Abstract Factory)(1)
c++·设计模式·抽象工厂模式
感哥1 小时前
C++ std::vector
c++
zl_dfq1 小时前
C++ 之【C++11的简介】(可变参数模板、lambda表达式、function\bind包装器)
c++
每天回答3个问题1 小时前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
凯子坚持 c1 小时前
精通 Redis list:使用 redis-plus-plus 的现代 C++ 实践深度解析
c++·redis·list
JCBP_2 小时前
QT(4)
开发语言·汇编·c++·qt·算法
会开花的二叉树3 小时前
继承与组合:C++面向对象的核心
java·开发语言·c++
潮汐退涨月冷风霜3 小时前
数字图像处理(1)OpenCV C++ & Opencv Python显示图像和视频
c++·python·opencv