C++的this指针

成员函数的this指针

C++当中有一个this指针。

这个this指针是从哪里来的呢?

类的任何一个成员函数,都能kuku变出来一个this指针。

从cpu的视角看看这个问题,到底是咋回事呢。


compiler explorer

我最近找到一个好东西,

就是compiler explorer。

可以从下面的地址访问它:

https://godbolt.org/

写C++代码比较普通函数和成员函数

看一下上面的截图。

成员函数和普通函数的汇编指令,是完全一致的。

这说明了啥问题?

成员函数和普通函数是完全等价的

this指针,就是成员函数的参数

this指针是每一个成员函数必备的默认参数。

只是C++语法,将它隐藏了起来而已。

普通参数,该做的事情,this,都做了。

谁给成员函数输入this指针?

从函数调用的汇编指令看,

调用成员函数和调用普通函数的汇编指令,完全一样。

既然是完全一样的,对比这两行调用代码,

就可以知道,输入this指针,就是输入一个内存地址。

就是输入对象test的内存地址

所以本质是,

当对象调用成员函数的时候,

都会将自己的地址当做this指针,

输入给成员函数。

只是C++语法将这个内存地址的传参隐藏起来了。

你说你隐藏起来干什么玩意。

posted @ 2023-06-07 07:37  准提弟子  阅读(93)  评论(0)    收藏  举报