C++类中函数隐藏参数——this指针

本文深入探讨了C++中this指针的概念与应用。通过具体示例介绍了this指针如何帮助编译器区分不同的对象调用同一成员函数的情况,并解释了this指针的特性及其在成员函数中的传参方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

this指针的使用

  • this指针于类相继而生,在引用之前产生,故保留其体系。
  • this指针到底做了些什么的事情,我们可以拿一段代码来看一下。
#include <iostream>
using namespace std;
class Student
{
public:
void InitStudent(char *name, char *gender, int * age)
{
strcpy(_name,name);
strcpy(_gender,gender);
_age=age;
}
private:
char _name=[20];
char _gender=[3];
int _age;
};
int main ()
{
Student s1,s2;
s1.InitStudent("崔斯特","男",20);
s2.InitStudent("阿狸","女",18);
return 0;
}
  • *因为在类当中成员函数与类中对象是独立存在的,这一点我们从sizeof()函数中可以体现,我们会发现类的大小与成员函数存在的多少并无关系,那么当出现上述连续初始化俩个成员对象的时候,我们的编译器是如何对号入座的呢。
  • 这里就要提到我们的主角 this指针了,就拿上面的初始化函数为例,如果将上述函数的参数完整显示,我们会看到这样的代码。*
InitStudent(const *this,char * name,char *gender,int *age)
{}
  • 既然函数第一个参数是一个常指针,那么我们每次调用该函数时给它传的值又是什么呢?通过内存查看,我们会发现当第一次调用初始化函数时this指针指向的地址与类中对象s1的地址相同,但当我们第二次调用的时候 this指针指向的地址又与类中对象S2的地址相同,不同的是,我们第一次用对象S1调用,第二次用对象s2调用,也就是说,this指针指向位置是跟随当前类成员对象的,这样看起来,倒像是个可爱的小跟班,很靠谱。
  • this指针只存在与类中
  • this指针的类型为 类类型 * const
  • this指针可以为空

this指针的传参方式

  • 如果参数个数确定,参数从右向左依次传递, this指针通过exc寄存器传值。`
  • 如果参数个数不确定,参数从右向左依次传递,this指针最后压栈。

    • 以上就是我认识到的this指针,或有不足,仍会学习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值