this指针
来源:互联网 发布:php小说源码 编辑:程序博客网 时间:2024/06/05 15:49
建立一个对象时,系统为该对象分配内存栈区空间(位于栈区内),用于存储该对象的非静态数据成员。而该类的成员函数则存于另外的代码分区内。这些成员函数一般都用于访问(读写)该类各对象的各个数据成员。试问:各成员函数怎么知道这些非静态数据成员的地址,也即各对象的地址?原来,每个对象的地址都存放在它自己的this指针内。而每个成员函数的参数表中都隐含着这个指针。
应该指出,this指针是指向一个对象的,所以它能指向该对象的非静态数据成员。
由于对象的this指针不属于对象本身,因此使用sizeof宏所得的对象长度中并不包括this指针在内。但每次调用非静态成员函数时,this指针都作为第一个隐式参数传递给对象(通过编译器)。
#include<iostream>using namespace std;class Test{int x;public:Test(int a){x=a;}void print() const;};void Test::print() const{cout<<"x="<<x;cout<<"\nthis->x="<<this->x<<endl;cout<<"(*this).x="<<(*this).x<<endl;}int main(){Test obj(12);obj.print();}
x=12
this->x=12
(*this).x=12
--------------------------------
Process exited after 0.3203 seconds with return value 0
请按任意键继续. . .
0 0
- this指针
- this指针
- this指针
- this指针
- this指针
- this 指针
- this指针
- this指针----
- this指针
- this 指针
- This 指针
- this指针
- This指针
- this指针
- this指针
- this 指针
- this指针
- this指针
- 专家谈信息安全:一上网,基本上等同于裸奔
- 【OpenCV学习笔记 014】人脸人眼识别
- [python]global与nonlocal关键字
- linux常用命令
- 常用集合【LinkedList 线程不安全】
- this指针
- 【CUDA开发】 CUDA Thrust 规约求和
- 精选30道Java笔试题解答
- 字符编码 ASCII/ UNICODE/ Multi-Byte (二)
- MATLAB GUI杂记
- [计蒜客] 最大子阵列(补充与扩展)
- 欧盟:谷歌不得向厂商提供经济鼓励,以预装其搜索服务
- Spring的依赖注入(即DI)
- 【J2EE核心开发学习笔记 009】MyBatis3操作数据库(CURD)