欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++40个入门知识点_18_ this指针笔记

程序员文章站 2022-03-05 23:21:25
...

个人总结:
非静态成员函数实际上的形参个数比程序员写的多一个。多出来的参数就是所谓的“this指针”。这个“this指针”指向了成员函数作用的对象,在成员函数执行的过程中,正是通过“this指针”才能找到对象所在的地址,因而也就能找到对象的所有非静态成员变量的地址。
静态成员函数并不作用于某个对象,所以在其内部不能使用 this 指针;否则,这个 this 指针该指向哪个对象呢

因为是中间跟着玄马学习的,所以有些地方没听懂,但是目的是为了了解this指针的使用,根据总结,关于类和this指针的性质有以下几点
类的大小与结构体大小一样(结构体的对齐方式)

同一个类的成员函数地址是一样的,表示同一个类的对象的成员函数是共用的
(1)类对象的数据是独立的
(2)类对象的成员函数是共用的

this指针:
成员函数调用时会偷偷的传递this指针,通过寄存器ecx传递,这种传递方式称为thiscall
(1)this指针中存放的是指向对象的指针,对象的首地址;
(2)静态成员函数先于对象存在,是所有对象所共有的,没有this
摘自B站视频:this指针

this 指针的作用:
非静态成员函数实际上的形参个数比程序员写的多一个。多出来的参数就是所谓的“this指针”。这个“this指针”指向了成员函数作用的对象,在成员函数执行的过程中,正是通过“this指针”才能找到对象所在的地址,因而也就能找到对象的所有非静态成员变量的地址。摘自:this指针理解
摘抄的小程序段:

//类域成员函数的地址即为类域成员函数指针
 
 //定义类的成员函数指针(__thiscall系统内部默认的关键字意为类的成员函数的调用约定)
 //__thiscall通过ecx寄存器传参
 typeid int(CClock::*PFN_GETHOUR)(void)
 
 //&CClock::GetHour意类域成员函数地址,即为类域加成员函数取地址
 PFN_GETHOUR lp=&CClock::GetHour

B站学习视频:视频地址