C++类中函数隐藏参数——this指针
2017-03-12 12:21
169 查看
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指针,或有不足,仍会学习。
相关文章推荐
- 封装回调函数——为对象方法(Object Method,参数中带this指针的函数) 构造 普通函数(参数中无this指针的函数)形式 的入口
- thiscall仅仅应用于“C++”成员函数(this指针存放于CX寄存器,参数从右到左压)
- 隐式this指针及C++类中六个默认成员函数
- 封装回调函数——为对象方法(Object Method,参数中带this指针的函数) 构造 普通函数(参数中无this指针的函数)形式 的入口
- 类中函数的一个隐含参数--this指针
- this指针作为函数隐含参数传递的方法
- C++类特性:this指针与函数的全局性(一)
- C++类成员函数中的函数指针参数
- C++点滴——const/volatile不能用来修饰没有this指针的成员函数
- C语言学习笔记.指针3--指针变量作为函数参数
- c/c++函数指针变量和函数指针参数
- 函数用参数为 结构体指针 在VC下出现的问题
- 关于用指针作为函数参数申请动态内存
- 函数的参数是指针
- 利用数组名作为函数参数传递排序和用指针进行排序
- 指针参数在函数中new的问题
- 指针作为函数参数传递 (转载)
- 函数参数为指针,在函数内没有必要改变指针地址,改了也不起作用,因为即便是指针,也是值传递指针!
- 函数参数中的“指针的指针”
- 用指向指针的指针作函数的参数(指针、指针数组、指向指针的指针)