C++对象模型——指向Data Members的指针(Pointer to Data Members)
发布日期:2021-06-29 11:52:21
浏览次数:2
分类:技术文章
本文共 1042 字,大约阅读时间需要 3 分钟。
本文所才用的编译环境是VC++6.0
作用
指向data members的指针,是一个有点神秘但颇有用处的语言特性,特别是如果需要详细调查 class members的底层布局的话,这样的调用可以决定vptr是放在 class 的起始位置或是尾端.另一个用途,可用来决定 class 中的access sections的次序
来看一个TEST类 不带虚函数
class TEST{ public: int nX; int nY; int nZ; double dJ;};
下面对该类进行测试
// Test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include#include using namespace std;int main(int argc, char* argv[]){ cout< <
测试结果
①sizeof大小 就是结构体的内存对齐24 没什么好讲的 ②printf的结果可以看出 nX nY nZ dJ的偏移量 就是按照他们在类声明的时候的顺序排列的 ③一个指向NULL的Data Members的指针 他的offset 会被编译器置-1 ④为什么cout输出的 只有0/1 因为输出的是一个bool值,代表有无偏移*****************************************************
下面加上虚函数,来判断虚函数指针的摆放位置
class TEST{ public: int nX; int nY; int nZ; virtual void Fun(void);};
#include "stdafx.h"#include#include using namespace std;int main(int argc, char* argv[]){ cout< <
结果
结论
①我们可以看出 虚指针是放在类的非成员变量的上边,无论他声明的位置
②为什么加了虚函数后,printf的offest NULL就变成了0问题
为什么加了虚函数后,printf的offest NULL就变成了0,大家知道的可以告诉我
转载地址:https://blog.csdn.net/ZZHinclude/article/details/117669600 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月26日 08时05分07秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2020年,技术圈十大“翻车”事件!
2019-04-29
C语言状态机编程思想
2019-04-29
为什么很多电器设备都要使用单片机?
2019-04-29
在中国做操作系统研发 20 年是种什么体验?
2019-04-29
PCB走线角度为90度到底行不行?
2019-04-29
这个 17 岁的黑客天才,破解了第一代 iPhone!
2019-04-29
在STM32价格疯长下,哪些国产32可以替代?
2019-04-29
半导体芯片原厂涨价及调价声明新增了这些!
2019-04-29
为什么你学C++这么难?
2019-04-29
无人机破巡检难题,秒变电网卫士
2019-04-29
五年,我成为了一名嵌入式工程师。
2019-04-29
2020年电赛题目,命题专家们怎么看?
2019-04-29
PCB元器件摆放不可忽略的10个技巧
2019-04-29
掌握AI核心技术没有秘籍,能自己创造就是王道
2019-04-29
大学老师的月薪多少?实话实说:4万多一点……
2019-04-29
2020年电赛题目,命题专家权威解析!
2019-04-29
如何掌握“所有”的程序语言?没错,就是所有!
2019-04-29
39岁单身程序员入住养老院
2019-04-29
写论文,这个神器不能少!
2019-04-29
我在哥大读博的五年,万字总结
2019-04-29