C++中this指针

来源:互联网 发布:看图学单词知乎 编辑:程序博客网 时间:2024/05/16 06:03

初学C++,刚接触的一个很重要的东西就是this指针。
this指针,是类的成员函数所独特具有的一类指针。它自动生成在函数的第一个参数,且自动隐蔽。this指针的作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。
下面简单介绍一下this指针是如何使用的

include

using namespace std;

class Student
{
private:
char _name[20];
char _gender[10];
int _age;
public:
void InitStudent(Student* p, char* name, char* gender, int age)
{
*p->_name = *name;
*p->_gender = *gender;
p->_age = age;
}

};
int main()
{
Student A;
A.InitStudent(&A, “Peter”,”boy”,18);
return 0;
}
当A学生调用InitStudnet函数时,即将A学生的地址传递给了this指针。
InitStudnet函数的原型应该是 void InitStudnet(Student this,Student p, char* name, char* gender, int age);第一个参数是指向该类对象的一个指针,我们在定义成员函数时没看见是因为这个参数在类中是隐含的。这样A的地址就传递给了this。

下面总结一下关于this指针的要点
1.this指针的类型是*const
2.它不占sizeof的大小
3.this的作用域在类成员函数的内部(不严谨)
4.是类成员函数第一个默认隐藏函数,编译器自动维护传递

关于_thiscall的调用约定
1._thiscall只能够用在类的成员函数上。
2.参数从右向左压栈
3.如果参数个数确定,this指针通过ecx传递给被调用着;如果参数不确定,this指针在所有参数被压栈后压入堆栈。
4.对参数个数不定的,调用者清理堆栈,否则函数自己清理堆栈。

this指针是可能为空的。

0 0