this指针的使用
1.解决名称冲突
#include <iostream>
using namespace std;
class Person {
public:
Person(int age) {
this->age = age;
}
int age;
};
void test()
{
Person p1(10);
cout << "p1年龄" << p1.age;
}
int main()
{
test();
system("pause");
}
2.返回对象本身
#include <iostream>
using namespace std;
class Person {
public:
Person(int age) {
this->age = age;
}
Person& PersonAddAge(Person& p) {
this->age += p.age;
//this是指向p的指针,*this指向的就是p这个对象本体
return *this;
}
int age;
};
void test()
{
Person p1(10);
Person p2(10);
//链式编程
p2.PersonAddAge(p1).PersonAddAge(p1).PersonAddAge(p1);
cout << "p2年龄" << p2.age;
}
int main()
{
test();
system("pause");
}
this指针的本质:是指针常量,指针的指向是不可以修改的
相当于const Person * const this
在成员函数后面加const,修饰的是this指向,让this指向的值也不可以修改
另外补充一个关于空指针访问对象的知识
#include <iostream>
using namespace std;
class Person {
public:
void showClassName() {
cout << "is a person class" << endl;
}
void showPersonAge() {
if (this == NULL)
{
return;
}
//成员m_Age前默认加了this->,this为NULL,即报错
cout << "is a person age" <<this->m_Age<< endl;
}
int m_Age;
};
void test()
{
Person* p = NULL;
p->showClassName();
p->showPersonAge();
}
int main()
{
test();
system("pause");
}