每个对象都有属于自己的成员,但所有对象的成员函数代码却合用同一份,那么成员函数如何辨别出当前是哪个对象正在调用自己呢?为了避免这种问题出现,C++引入了this指针概念。这个this指针式成员的隐含参数,在函数外无法使用,没当创建一个对象时,系统就把this指针初始化为指向该对象,那么这时this指针的值是当前调用成员函数的对象的起始地址。
目录
举例
//举个栗子
#include<iostream>
using namespace std;
class CStu
{
public:
int a;
CStu(int a)
{
this -> a = a;
this->Show();
//这里的this指针的类型是CStu* ,说明前面这个小a是属于当前这个类的,自然是外边的int a
}//里面的int a 是局部变量,作用域是花括号内
void Show()
{
cout << a << endl;
}
CStu* GetADDr()
{
return this;
}
};
int main()
{
CStu st(12);
st.Show();
CStu* p = st.GetADDr(); //第一个对象的地址
cout << p << endl;
CStu st1(13); //这里的st1有属于自己的this指针
p = st1.GetADDr();//第二个对象的地址
cout << p << endl;
p->Show();
return 0;
}
作用
1.区分同名的变量
2.是指向当前对象的指针
注意
1.有对象的时候,并且已为其分配空间,那么才有相应的this指针。
2.this指针不是成员。
3.This指针是成员函数的隐含参数,在函数外无法使用。