从一个小程序来看C++类的存储方式
来源:互联网 发布:韩东君 金晨 知乎 编辑:程序博客网 时间:2024/06/06 02:27
先来看下例:
程序的输出结果为:
24
这个没什么意外,sizeof(try1)的大小为4+空4+8+4+空4=24个字节;
问题是函数既然是类的成员函数,为什么不占用大小?
在我看来,其实每个成员函数并非为某个对象所有,而是全体类对象所有,每个对象都有一个隐含的this指针,这个this指针便在
函数调用时起到了作用,如果调用:
try1.printout();
实际上,printout函数在编译时会被编译成这样printout((CDC*)&dc),这个dc就是this指针,内存中一个类只有一份成员函数,
却又很多成员变量——每个类对象都有一份,当try1调用printout函数时就会通过传递this指针来确定printout()被哪个对象调用!
而windows程序设计中有另外一种被称为回调函数(CALLBACK)的东西,回调函数是程序人员设计,而由WINDOWS自己调用的函数,既然是Windows系统调用的,那么就不该通过一个对象来调用:即这种函数不能是类的成员函数! 而在CALLBACK函数前缀上static关键字可以很好的解决这个问题,或者直接定义成非成员函数。。。
- 从一个小程序来看C++类的存储方式
- 大家来看一个这样的C语言小程序
- 从一个小例子来看setInterval的使用
- 从一个加密程序来看安全漏洞的问题
- C程序判断你主机的数据存储方式(大端和小端)
- 【C++】【学习笔记】【002-003】从一个小程序说起
- C小程序 - 分析一个多线程的小程序
- 关于C语言的一个小程序
- 一个简单的C语言小程序
- 一个C程序~ 大家都来看看那~
- 从两个小例子来看matlab系统仿真的使用
- 从矩阵乘法的不同计算方式来看局部性原理
- 从Java汇编来看Java程序的性能优化
- 从java汇编来看java程序的性能优化
- 从MaxTemperature程序来看Mapreduce 的执行过程
- 由小程序来看多线程的运行问题
- 用存储过程写的一个小递归程序
- 从“绘制一个立方体”来看OpenGL的进化过程
- internet时间和域
- 说拆就拆了
- MFC的那些内幕——AfxWinMain的那些事
- 怎么从一个txt格式的文件中一次读取10个值并赋值给一个数组???
- swf 更新后,客户端不需要清空缓存即可查看最新版本
- 从一个小程序来看C++类的存储方式
- wince 5.0 6.0 HIVE注册表
- linux下解压命令大全
- Android访问Servlet
- Linux 实时技术与典型实现分析
- jint
- 我的互联网理念
- long time no do this
- php 迭代 遍历对象