(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 ,得输出结果如下:
再来一幅:
谢谢阅读