this指针

在每一个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,称为this。它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址。

举一个简单的例子来说:
a.volume函数要计算height*width*length的值,实际上是执行:(this->height)(this->width)(this->length) 由于当前this指向a,因此相当于执行(a.height)(a.width)(a.length)
this指针是隐式使用的,它是作为参数被传递给成员函数的。
【特性】

1、this指针的类型 类类型* const
2、this指针并不是对象本身的一部分,不影响sizeof的结 果。
3、this的作用域在类成员函数的内部(不严谨)。
4、this指针是类成员函数的第一个默认隐含参数,编译 器自动维护传递, 类编写者不能显式传递。
5、只有在类的非静态成员函数中才可以使用this指针, 其它任何函数都不可以。

class Person
 {   
  char * _pName;    
  char * _pSex;   
  unsigned char _cAge;
  void Print()   
   { 
           cout<<_pName<< "-" <<_pSex<<"-" <<_cAge<<endl;             
   }
  void Init(Person*const this char * pName;    
       char * pSex;   
       unsigned char cAge; )
   {
        strcpy(this->_pName,pName);
        strcpy(this->_pSex,pSex);
        this->_cAge=cAge;
   }

  };

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值