摘要: 在virtual的知识里摸爬滚打好几天,最近大脑有些不够用了,现在整理一下 非考虑内存对齐时各个结构的大致模型 至于考绿内存的在前面几张已经叙述过了,为了方便,我再纸上画了整体的流程,, 内存分配要注意对齐参数=min(pack,最大字节的类型); 虚函数指针和虚函数表指针跨越的大小一定是对齐参数的 阅读全文
posted @ 2017-01-17 22:54 柳下_MBX 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 如果说没有虚函数的虚继承只是一个噩梦的话,那么这里就是真正的炼狱。这个C++中最复杂的继承层次在VS上的实现其实我没有完全理解,摸爬滚打了一番也算得出了微软的实现方法吧,至于一些刁钻的实现方式我也想不到什么理由来解释它,也只算是知其然不知其所以然吧。 虚、实基类都没有虚函数 这种情况也还算比较简单。 阅读全文
posted @ 2017-01-17 12:01 柳下_MBX 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 被一个virtual搞得脑袋疼了好几天,明天继续虚函数+虚继承混合,伤不起,伤不起 阅读全文
posted @ 2017-01-17 02:26 柳下_MBX 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 1.无继承的普通类: 在有虚函数的情况下类会为其增加一个隐藏的成员,虚函数表指针,指向一个虚函数表,虚函数表里面就是类的各个虚函数的地址了。那么,虚函数表指针是以什么模型加入到类里面的,虚函数表里面又是怎么安排的呢。简单来看下就可以知道了。 定义一个A的变量,然后看其内存布局: 最开始的 4个字节就 阅读全文
posted @ 2017-01-17 02:22 柳下_MBX 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 我们知道,虚继承的基类在类的层次结构中只可能出现一个实例。虚基类在类的层次结构中的位置是不能固定的,因为继承了虚基类的类可能会再次被其他类多继承。 比如class A: virtual T{} 这时T的位置如果相对于A是固定值的话,假设偏移是X,当再有个类 class B:virtual T{} ; 阅读全文
posted @ 2017-01-17 01:04 柳下_MBX 阅读(760) 评论(0) 推荐(1) 编辑