Inside The C++ Object Model

Inside The C++ Object Model

六月 6, 2019 阅读 41 字数 719 评论 0 喜欢 0

虽然这本书很出名,也很薄(300+页),但是我看到第四章就看不下去了,简直又臭又长,不知所云

当时的编译器还没有实现C98,甚至标准委员会还没有通过新标准,我的结论这本书已经过时了,不要再耗费精力去阅读了,去看新书吧,至少也得是C++11以后的书,像什么TAOCP这类的书籍,就让它们在经典书籍的目录躺着吧,如果不出新版本,就不要去阅读它…

如果想要了解类的内存模型,看这篇博文就够了https://blog.csdn.net/IT_YUAN/article/details/24651347,当然里面的内容也有过时的,至少我用g++去测试的时候部分情况是不一样的,不要太纠结(可参考下面对比图,造成差别的原因可能是作者的机器是32位).编译器总是会迭代更新的,所以知道某种布局也就够了.好比学习8086的就可以了,不必要去具体学习286,386,架构都差不多,但具体细节可能不一样

最后一张图,变量类型都改变位了double,如果是64位机器,博文所说的GrandChild的大小就应该是两倍,即72,可是结果是56(有3根指针,4个变量,总大小为7*8=56),这说明现在的编译器行为已经发生改变,或者这个编译器从来没有变现得和博文一样,我举这个例子不是要去驳倒博文,而是想说明时代在发展,不能用旧思维去学习cpp,要是谁再说什么boost,auto_ptr(如果是公司的GCC版本过低,不支持高版本,那你至少得知道有这么回事,C20都要出来了,还提十几年前的说法,不应该吧),问什么内存模型,毫无疑问,这是一个菜鸡选手(我也是菜鸡,但好歹有自知之明)…如果这个菜鸡选手还有优越感,那就是因循守旧,上了年纪不思进取不学习的菜狗无疑了

发表评论

电子邮件地址不会被公开。