个人对于C++中this指针内容的理解

之前一直不能理解this指针到底是什么,即使尝试在自己代码里用了,还是一头雾水,最近把程序搞了个crash出来,gdb看了下帧,打印了下this指针的内容之后,结合之前查到的一些资料,就完全理解了。
于是记录下 自己的理解。用例子来说明。
定义一个命名空间,声明父类Base。

namespace BaseNamespace
{
    class Base
    {
        public:
            Base();
            virtual ~Base();
            virtual int init_human(){return 0;}
            void initfunc();

        public:
            int test1 ;
            int test2;
            int test3;

        private:
            const char * test;
    };
}

void Base::initfunc(){
    this->test1;
}

在类Base里的this指针,指向的其实就是类Base本身,而且只有在类Base里面的非静态成员函数中,例如initfunc(),才能调用访问this指针。
*this={BaseNamespace::Base={_vptr.Base(这里的内容应该还是BaseNamespace::Base)}}
利用this指针可以调用访问initfunc();test1;test2;test3以及test。

再声明一个继承类:

namespace sonBaseNamespace
{
    class sonBase : public Base
    {
        public:
            sonBase();
            virtual ~sonBase();
            int init_human();
        public:
            int son_test;

        private:
            const char *son_name;
            const char *son_age;
    };
}
int sonBase::init_human(){
    this->son_age;
    this->test1;
    return 0;
}

*this={BaseNamespace::Base={_vptr.Base(这里的内容应该是sonBaseNamespace::sonBase)}}
这个this指针可以访问Base以及sonBase中的函数和参数。

==================================================
就是网上搜到的答案,this指针是成员函数所作用的对象(例子里是Base、sonBase)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值