c++对象模型—阅读之三

Data语意学-讲述的主要是数据排布咯

所谓知己知彼百战不殆,只有理解编辑器能为我们做了什么,才能更好的利用编辑器了,哈哈哈点点题外话。

数据在内存中的排布主要是由

1.语言本身所造成的额外负担(overhead)。。。语言的特点我就不敢说了哈哈哈我是小菜

2.编辑器对于特殊情况的所提供的优化处理。。。编辑为了自己的处理为我们加了一些东西

3.Alignment的限制。。。就是数据的对齐处理

以上书书上的总结可以查阅书得到。我想说的是你必须知道自己想干什么,需要什么,要编辑器干什么,这样才不会有意想不到的结果了。(往往我写的东西不是我们想要的  哈哈哈我再说我自己了)。编辑到底干了什么估计还是试试最好,猜想只是猜想。。。在这留下个疑问 template class 的static data menbers的行为???

在书中提到了防御性编程 -在这里给大家推荐一本书叫 write clear code 就是讲防御性编程,当你看了这本书是你会疯的,你会发现你写的代码完全是垃圾。。。其实也没得必要太过了哈。。。是不是感觉自己像波特先生进入了霍格伍兹在学魔法了哈哈哈

The Binding of a Data Member

说白了就是编辑器会对成员用到的数据类型进行绑定(编辑器会对把数据绑定到最近的定义),为了防止歧义的产生,我们应该把需要的数据定义放在他最近需要的地方。一个好的方法就是在哪里用就在哪点定义,这样的好处是不会出错哈哈哈但是代码不美观呵呵。~

Data Member Layout

说实话这些都是意识问题,随着时间的推移你会意识到了 呵呵。

编辑器不会可以为我的data member 经行很好的排列 我们要干什么 ,而我们要做的就是对数据成员经行整理,合理的按照空间大小经行排列,这只是一个意识问题无伤大碍,因为这样可以防止编辑器产生过多无用的站位用以空间对齐。但是对于大数据量得代码这点意识还是很重要的。还学要提醒的是前段时间我对代码的内存排布非常的费解,编辑器做了太多了,以至于我们很少关注,按书上的话。。。member 的排列只需符合较晚出现的member在class object 的较高地址,但是member不一定会是连续排列的,会有一些用于对齐的空间站位,和编辑器生成的Vptr我就理解为放在尾部吧,又是还会有一些其他东西,我忘记名字了。~求拍砖。。。

分2次发吧东西太多了。。。 

原文链接: https://www.cnblogs.com/KaPu/archive/2011/08/12/2136636.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    c++对象模型—阅读之三

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/30391

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午7:44
下一篇 2023年2月8日 上午7:44

相关推荐