this指针
this指针是啥
- this指针并不是对象本身的一部分,不会影响sizeof的结果
- this指针其实就是对象本身的地址。
this指针与虚指针
- this指针不是对象本身的一部分,而虚指针是对象的透明成员,是对象的一部分。
- 虚指针放在对象的起始位置,this指针保存的也是对象的起始地址。所以this指针指向虚指针
具体实现探究可见https://www.jianshu.com/writer#/notebooks/42912661/notes/68571491/preview最后部分
this指针与成员函数
实际上,编译器将成员函数转换为非成员函数,经过下面三步
- 给函数添加额外参数——this;
- 将对每一个nonstaitc data member的存取操作改为this指针来存取;
- 将member function 重写成一个外部函数。对函数名采用mangling 处理,使之成为独一无二的语汇;
可见,成员函数实现最重要的一步是引入了this指针。
当调用成员函数时,会将当前对象的this指针当做传入成员函数,(加一个隐性参数this),成员函数通过这个this指针来对对象的data member进行存取。
注:静态成员函数无法使用this指针,应为静态成员函数是"class specific"的,类独有一份,并不会(也不需要)将对象的地址传给它
网友评论