this指针的作用:
当形参和成员变量名同名时,可以作区分,this.age = age;
在非静态成员函数中返回对象本身时 return *this
this的本身时指针常量(只能指向对象自身)
#include<iostream>
#include<cstdio>
using namespace std;
class T{
public:
int a;
public:
T(int a){
this->a = a;
}
T func(){ // 创建新的对象
cout<<this->a<<"++"<<endl;
this->a = this->a + 1;
return *this;
}
T& func_a(){
this->a = this->a + 1;
return *this;
}
};
int main()
{
T t1 = T(10);
cout<<t1.a<<"->";
T t2 = t1.func();
cout<<t1.a<<"->"<<endl;
T t3 = t1.func().func(); // 由于返回类型时 T 所以 t1.func() 执行完后 再次调用 func() 已经不是原本的对象了
cout<<t1.a<<endl;
cout<<t1.a<<endl;
cout<<t2.a<<endl;
cout<<t3.a<<endl;
printf("%p %p %p\n", &t1, &t2, &t3);
printf("%p %p %p\n", t1, t1.func(), t1.func().func());
cout<<"------------"<<endl;
T t4 = T(10);
cout<<t4.a<<"->";
T t5 = t4.func_a();
cout<<t4.a<<"->";
T t6 = t4.func_a().func_a();
cout<<t4.a<<endl;
cout<<t4.a<<endl;
cout<<t5.a<<endl;
cout<<t6.a<<endl;
printf("%p %p %p\n", &t4, &t5, &t6);
printf("%p %p %p\n", t4, t4.func_a(), t4.func_a().func_a());
return 0;
}