在 C++ 中,this 指针是所有成员函数的隐含参数,每一个对象都能通过 this 指针来访问自己的地址。因此,在成员函数内部,它可以用来指向调用对象。成员函数可以通过this指针知道自己属于哪一个对象。
那么this指针有什么用呢?
可以解决定义成员函数时形参和数据成员同名的问题。
例如:
class stu {
private:
int age;
public:
void setAge(int age)
{
age = age;//这里左值age默认是形参的age;
}
void getAge(void)
{
cout << age << endl;
}
};
这里形参age给形参age赋值,所以调用getAge函数时会输出一个随机值。
可以改成
this->age=age;
这样就可以区别开来。
this指针还可以用来调用别的对象;
头文件:
class stu {
private:
int age;
public:
void setAge(int age)
{
age = age;
}
int compare(stu s)
{
if (this->age >= s.age)
return 1;
else
return 0;
}
};
cpp文件:
int main(void) {
stu ob1,ob2;
ob1.setAge(18);
ob2.setAge(17);
cout << ob1.compare(ob2) << endl;
return 0;
}
输出
1
this指针的类型可以理解为stu*
我们来验证一下:
#include<iostream>
using namespace std;
class stu {
public:
void getAdd(void)
{
cout << this << endl;
}
};
int main(void) {
stu* ob=new stu;
cout << ob << endl;
ob->getAdd();
return 0;
}
输出:
00B35800
00B35800
可以看出ob和this是同一个地址;
编程起步,有不对的地方谢谢指正。😀