1. this指针的工作原理
类的成员函数默认编译器都加上了一个this指针,这个this指针指向调用该成员函数的对象
如图:
2. this的应用
class person
{
public:
person(int age, string name)// this
{
this->age = age;
this->name = name;
}
void show()
{
cout << age << " " << name << endl;
}
//常函数 不能通过this指针修改this指针指向的对象内容
//常量指针常量
person person_add( person &p2)const//const person * const this ------> p1
{
//this->age = 200;
person p(this->age+p2.age,this->name+p2.name);//"helloworld"
return p;
}
int age;
string name;
};
//全局调用
person person_add(person &p1, person &p2)
{
person p(p1.age+p2.age,p1.name+p2.name);//"helloworld"
return p;
}
void test02()
{
person p1(10, "hello");
person p2(20, "world");
//p3 = p1 + p2 30,"helloworld"
//全局调用
person p3 = person_add(p1,p2);
p3.show();
//类中调用
person p3 = p1.person_add(p2);
p3.show();
}
3. const 修饰成员函
1. 在函数后面加上const,这个是一个常函数
2. 这个const修饰的是指针 const type * const this,代表不能通过this指针去修改this指针指向对象的内容
代码实现
//常函数 不能通过this指针修改this指针指向的对象内容
//常量指针常量
person person_add(person& p2)const //const person * const this
{
//this‐>age = 200;
person p(this name + p2.name); //"helloworld"
return p;
}