#include <iostream>
#include <string.h>
using namespace std;
// this指针 永远指向当前对象
class Students06{
public:
int age;
// int m_age; //member成员首字母m
Students06(int age){
// 1.解决命名冲突的问题 this指针找成员变量需要使用->符号
this->age = age;
// m_age = age;
}
bool com_age(Students06 &p){
// this指针默认是加在每个成员函数中的
if(this->age == p.age){
return true;
}
else{
return false;
}
}
// 链式编程:允许将一个对象的成员函数调用的结果返回给另一个成员函数,从而可以在一行代码中执行多个操作。使得代码更简洁
// 返回Students06类型的引用,才可以后续实现链式编程
// 注意返回值类型 必须是对象的引用,如果是值的话,会复制构造函数,生成了副本,后续的链式编程,只会第一个生效,后面的都是针对新生成的副本在进行操作
Students06& add_age(Students06 &stu){
this->age += stu.age;
return *this; // *this是对象的本体
}
};
int main()
{
Students06 stu1(10);
cout << "stu1的年龄" << stu1.age << endl;
Students06 stu2(20);
bool res = stu2.com_age(stu1);
cout << "结果为: " << res << endl;
stu2.add_age(stu1).add_age(stu1).add_age(stu1);
cout << "stu2的age: " << stu2.age << endl;
return 0;
}
this指针指向被调用的成员函数所属的对象。
c++规定,this指针是隐含在对象成员函数内的一种指针。当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含指针this,用以保存这个对象的地址,也就是说虽然我们没有写上this指针,编译器在编译的时候也是会加上的。因此this也称为“指向本对象的指针”,this指针并不是对象的一部分,不会影响sizeof(对象)的结果。
this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每一个对象都拥有自己的函数成员。一般情况下,并不写this,而是让系统进行默认设置。
this指针永远指向当前对象。 |
- 当形参和成员变量同名时,可用this指针来区分
- 在类的非静态成员函数中返回对象本身,可使用return *this.