this指针

来源:互联网 发布:什么是数据流程分析 编辑:程序博客网 时间:2024/06/16 09:15

在每一个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,称为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 0
原创粉丝点击