C++ 中的this指针详解及实例
本文主要介绍了C++中的this指针详解及实例的相关资料,这个知识点对于C++的开发者非常重要。this指针是类的一个自动生成、自动隐蔽的私有成员,它存在于类的非静态成员中,指向被调用函数所在的对象。
让我们来了解this指针的定义和作用。this指针是类的一个自动生成、自动隐蔽的私有成员,它存在于类的非静态成员中,指向被调用函数所在的对象。例如,在类Ctest中的成员函数Funtest中,this指针就指向调用该函数的对象test。
当我们调用某个成员函数时,实际上是在替某个对象调用它。如果Funtest指向Ctest的成员(例如iValue),则它隐式地指向调用该函数的对象的成员。成员函数通过一个名为this的额外的隐式参数来访问调用它的那个对象。
在成员函数内部,我们可以直接使用调用该函数的成员,而无需通过成员访问运算符来做到,因为this指针所指的正是这个对象。任何对类成员的直接访问都被看做是this指针的隐式引用,上面的程序可认为是this->iValue。
需要注意的是,this形参是隐式定义的,实际上,任何自定义名为this的参数或变量的行为都是非法的。因此,Funtest函数的定义相当于是void Funtest(Ctest *const this,int *iVlue){ this->_iValue = iValue;}this是一个常量指针,不允许改变this中保存的地址。
此外,这个指针还具有两种传参方式:参数压栈和ecx寄存器。当成员函数的参数可变时,遵循_cdecl调用约定;当成员函数的参数固定时,这时遵循_thiscall调用约定。
需要注意的是,当this指针为NULL时编译器可编译通过,例如:
```cpp
class Ctest{
public:
void Funtest(){}
}
int main(){
Ctest *p = NULL;
p->Funtest();
}
```
this指针是类的一个自动生成、自动隐蔽的私有成员,它存在于类的非静态成员中,指向被调用函数所在的对象。这是一个非常重要的知识点,对于C++的开发者来说非常关键。