C++ this指针解析

this指针用处:

          this指针是在学习c++中的类时提出的。一个类对象的this指针并不是对象本身的一部分,在用sizeof()计算对象大小时只有成员变量的大小。既没有成员函数的大小,也没有this指针的四个字节的大小。当在类的非静态成员函数访问类的非静态成员时,编译器会自动将对象的地址传给作为隐含参数传递给函数,这个隐含参数就是this指针。即使你并没有写this指针,编译器在链接时也会加上this的,对各成员的访问都是通过this的。例如你建立了类的多个对象时,在调用类的成员函数时,你并不知道具体是哪个对象在调用,此时你可以通过查看this指针来查看具体是哪个对象在调用。
例:       
Student std;
std.InitStudent(9)
实际利用下面来完成
std.InitStudent(&std,9)

this指针经典比喻:

        当我们在进入一个房子之后,可以看见房子里的桌子,椅子、地板等,但是看不到房子的全貌。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?this是一个指针,它时时刻刻指向这个实例。

this指针的特性:

1.this指针的类型是 类类型* char  (指向类类型的指针)

2.this指针只能在类成员函数中使用(全局函数和静态函数不能使用)

   实际上成员函数默认第一个参数为T *const this

例:

class Student
{
public:
      void Funtest(int a)
      {
       }
};
实际函数原型编译器默认为
void Funtest(Student * const this,int a)

__thiscall调用约定:
a、__thiscall只能够用在类的成员函数上。
a、参数从右向左压栈。
b、如果参数个数确定,this指针通过ecx传递给被调用者;如果参数不确定,this指针在所有参数被压栈后压入堆栈。
c、对参数个数不定的,调用者清理堆栈,否则函数自己清理堆栈



        




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值