当前位置 博文首页 > 文章内容

    带你了解C++this指针的用法及其深究

    作者:shunshunshun18 栏目:未分类 时间:2021-08-19 14:44:45

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    前言

    今天,码神像一个新车手一样,尝试着用模板来更新一下,不要建议哦,毕竟没有放弃爱情的拓海也不是真正的车神,哈哈,发车了

    一、this指针是个什么东东,重要吗?

    首先,我以码神的名义起誓,this指针绝对重要,尤其是对于c++这个面向对象编程的语言来说!

    有的码手可能要说了:你说重要就重要?那我还说不重要呢?

    这个么,空口无凭,我现在来举一个例子:

    我们知道对于一个类来说,要有很多工作要做,其中类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,这时c++中的this指针就应用而生了

    注:

    每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。this指针不是对象的一部分,故sizeof不会体现出this指针的大小,this指针的类型取决于使用this指针的成员函数类型以及对象类型。

    请添加图片描述

    二、案例理解

    代码如下(示例):

    #include<iostream>
    using namespace std;
    class Person
    {
    public:
    	Person(int age)
    	{
    		this->age=age;
    		//this指针指向被调用的成员函数所属的对象
    	}
    	int age;
    	//int m_Age;
    	void PersonAddAge(Person &p)
    	{
    		this->age += p.age;
    		//this指向篇的指针,而*this指向的是篇这个本体
    		return *this;
    	}
    }
    //解决名称冲突
    void text01()
    {
    	Person p1(18);
    	cout<<"p1age:"<<p1.age<<endl;
    }
    //返回对象本身用*this
    void text02()
    {
    	Person p1(10);
    	Person p2(10);
    	p2.PersonAddAge(p1);
    	cout<<"p2的age:"<<p2.age<<endl;//20
    	p2.PersonAddAge(p1).PersonAddAge(p1);
    	cout<<"p2的age:"<<p2.age<<endl;//30
    	//链式编程思想
    }
    int main()
    {
    	text01();
    	text02();
    	return 0;
    }
    

    主要的用途

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

    在类的非静态成员函数中返回对象本身,可使用return *this

    总结 通过上面我们知道在C++中成员变量和成员函数是分开存储的每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码c++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象this指针是隐含每一个非静态成员函数内的一种指针this指针不需要定义,直接使用即可

    最后:this指针指向被调用的成员函数所属的对象

    总结

    本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注IIS7站长之家博文的更多内容!