目录
this指针的工作原理
this指针的应用
const修饰的成员函数
this指针的工作原理
在c++中同一个类的不同对象,在内存中有不同的储存空间,但是成员函数在内存中只保存了一份,在调用函数处理成员数据时,this指针能保证该成员函数处理的是自己的成员数据。
#include <iostream>
#include <string.h>using namespace std;class Person
{public:int a;void show(){cout<< a << endl;}};int main()
{Person p;p.a = 100;Person p1;p1.a = 1000;p.show();//person * const this 对象调用函数 就将对象的地址传给this 访问this->areturn 0;
}
编译运行
类的成员函数默认编译器都加上了一个this指针,这个this指针指向调用该成员函数的对象
this指针的应用
#include <iostream>
#include <string.h>using namespace std;class Person
{public:Person(int age,string name){this->age = age;//p1的地址传给this指针 age赋值给了this指向的age name赋值给了this指向的namethis->name = name;}void show(){cout << age <<" "<< name << endl;}Person Person_add(Person &p2)//this指向p1 {Person p(this->age + p2.age,this->name + p2.name);return p;}int age;string name;};Person Person_add(Person &p1,Person &p2)
{Person p(p1.age + p2.age,p1.name + p2.name);return p;
}void test01()
{Person p1(10,"lucy");p1.show();
}
void test02()
{Person p1(10,"hello");Person p2(20,"world");Person p3 = Person_add(p1,p2);p3.show();
}
void test03()
{Person p1(10,"hello");Person p2(20,"world");Person p3 = p1.Person_add(p2);p3.show();
}int main()
{test01();test02();test03();return 0;
}
编译运行
const修饰的成员函数
在函数后面加const 使函数成为常函数
这个const修饰的是指针 const type* const this 代表不能通过this指针去修改this指针指向对象的内容
class Person
{
public:
Person(int age,string name)
{
this->age = age;//p1的地址传给this指针 age赋值给了this指向的age name赋值给了this指向的name
this->name = name;
}
void show()
{
cout << age <<" "<< name << endl;
}//常函数 不能通过this指针修改this指针指向的对象内容
//常量指针常量
Person Person_add(Person &p2)const
{
Person p(this->age + p2.age,this->name + p2.name);
return p;
}
int age;
string name;};