速通C++中this指针的概念和用途

this指针是C++中的一个特殊指针,它指向当前对象的地址。在C++中,每个对象都有一个隐藏的指向自身的this指针,可以在对象的成员函数中使用。

特别注意:this指针指向被调用的成员函数所属的对象。(谁调用this指针,this指针就指向谁)

this指针是隐含每一个非静态成员函数内的一种指针
this指针不需要定义,直接使用

编译器中this指针的用const修饰的,this指针本身是不能被修改的,但是内容是可以修改的,并且我们可以使用。

this指针的用途
1.当形参和成员变量同名时,可用this指针来区分

2.在类的非静态成员函数中返回对象本身,可使用return *this,要注意函数返回类型需不需要加&

下面实例帮助大家加深理解,不理解的记得留言哦。

#include
using namespace std;
//this指针的用法和作用
class Person 
{
public:
	Person(int age)
	{
		//解决名称冲突
		//age = age;  错误
		this->age = age;
	}

	/*修改前
	void PersonAdd(Person &p)
	{
		this->age += p.age;
	}*/
	Person& PersonAdd(Person& p)
		//用Person&而不是Person
		//因为Person&返回的是p2本体
		//用Person的话系统会调用拷贝构造函数,创建一个新的对象返回,这样p2只能加一次
		//后面的加到新对象上去了(每次调用都是创建新对象返回)
	{
		this->age += p.age;
		//p2此时调用了this指针,则this指针指向的就是p2
		//*this就是p2本身
		return *this;
	}
	int age;
};
void test()
{
	Person p(6);//p调用的有参构造,this指针指向p
	cout << "p的年龄为:" << p.age << endl;
}
void test2()
{
	Person p1(10);
	Person p2(30);
	cout << "p2的年龄为:" << p2.age << endl;
	p2.PersonAdd(p1);//将p1的年龄加到p2上
	cout << "p2的年龄增加为:" << p2.age << endl;
	//p2.PersonAdd(p1).PersonAdd(p1).PersonAdd(p1).PersonAdd(p1);
	// cout << "p2的年龄增加为:" << p2.age << endl;
	//如果我们使用链式编程,让p2加上4个p1的年龄就会报错
	//解决上述方法需要更改PersonAdd()函数的返回值
	p2.PersonAdd(p1).PersonAdd(p1).PersonAdd(p1).PersonAdd(p1);
	cout << "p2的年龄增加为:" << p2.age << endl;
}
int main()
{
	test();
	test2();
	return 0;
}

需要注意的是在静态成员函数中是没有 ​this​指针的,因为静态成员不依赖于任何特定的对象实例。

希望你们生活愉快。

你可能感兴趣的:(c++,开发语言)