(1)先补充一个知识点,关于拷贝函数的本质

拷贝构造函数是一种特殊的构造函数,用于创建一个新对象,该对象是另一个同类型对象的副本。它返回的是新创建的对象,也就是对原对象的拷贝。

public:
    // 拷贝构造函数
    ClassName(const ClassName& other) {
        // 进行成员变量的拷贝
    }
};

这里的 other 是已存在对象的引用,拷贝构造函数会把 other 的成员变量值复制到新创建的对象里。

(2)来到重点关于this指针的用途,this指针指向被调用的成员函数所属的对象

1:this指针是隐含每一个非静态成员函数内的一种指针

2:this指针不需要定义,直接使用即可

【1】用途一,当形参和成员变量重名时,可以用this指针来区别

错误代码

using namespace std;
class person{
	public:
		person(int age){
			age=age;
		}
		int age;
};
void test01(){
	person p(18);
	cout<<p.age<<endl;
}
int main()
{
	test01();
	return 0;
 } 

正确代码

using namespace std;
class person{
	public:
		person(int age){
			this->age=age;
		}
		int age;
};
void test01(){
	person p(18);
	cout<<p.age<<endl;
}
int main()
{
	test01();
	return 0;
 } 

【2】用途二,返回对象本身用*this

using namespace std;
class person{
	public:
		person(int age){
			this->age=age;
		}
		int age;
		person& personadd(person& p){
			this->age+=p.age;
			return *this;//返回的是调用这个函数的对象 
		}
};
void test01(){
	person p(10);
	cout<<p.age<<endl;
	person p2(10);
	p2.personadd(p).personadd(p).personadd(p);
	cout<<p2.age<<endl;
}
int main()
{
	test01();
	return 0;
 } 

****1:首先:如果拷贝函数的返回类型为person那么将不会累加,因为拷贝构造函数每次都会拷贝一个新的对象所以,不会实现累加,最后的结果是20

2:其次:this返回的是调用这个函数的对象***