this 指针

什么是 this 指针?

C++this指针,一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。
this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,
编译器会自动将对象本身的地址作为一个隐含参数传递给函数。
this指针是类的一个自动生成、自动隐藏的私有成员,它存在于类的非静态成员函数中,
指向被调用函数所在的对象。全局仅有一个this指针,当一个对象被创建时,this指针就存放指向对象数据的首地址。

this 指针特性

1 this指针是类 类型的指针 ,它不可修改;
2 只能在成员函数的内部使用;
3本质是成员函数的形参,形参不存储,所以不会影响成员函数的大小sizeof()
4 this 指针是成员函数隐藏的第一个指针形参

this 指针的传递(由编译器来维护)
:————————this call约定1成员函数调用约定 – ---->ecx寄存器传递
: ———————— 2 cdecl 约定——————————>this指针压栈(push)

this 指针不能修改;

1 this 指针存在哪里?

this指针无需显式储存内存中。只要存储对象的内存位置确定,对应的this指针就被确定了。
所以, 不存在所谓的this的“位置”,只是this表示了对象的存储位置而已。
&this违反语义规则,是错误的用法,不会编译通过。

2 this指针指向可以为空吗 ?this 指向NULL?

答案是 this指针 完全可以为空 ,调用成员函数时,如果访问“成员变量" ,程序一定崩溃(因为成员变量通过this指针访问),不访问成员变量时就不会崩溃;

3 编译器 怎么识别类?

1 先识别类名
2 识别类中成员变量
3 类的 功能(识别成员函数,并对成员函数进行改写 (1 ,this) );·

#1:this指针是什么时候创建的?

this在非静态成员中有意义,作为右值可以直接在编译时确定其存在,运行时无所谓创建。

#2:this指针存放在何处?堆,栈,全局变量,还是其他?

由上一问可知,this指针无需显式储存内存中。只要存储对象的内存位置确定,对应的this指针就被确定了。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值