《深度探索C++对象模型》阅读笔记(零)——引子

C++本不是门易学的语言,入门如此,进阶更甚,而当我从一个写C++程序之人,转变成调试大型C++工程之人的时候,我深切的感受到了C++的晦涩难懂。

当我面对一个个bug的时候,我是那么迷茫:

明明已经是个空指针了,为何程序会崩溃在指针指向的函数之中,而不是调用之时?

明明是已经被删除的指针,怎么还能对内存访问得那样自如?

明明也是个空指针,但这次为何在函数调用之时就崩溃了?

再加上找不到原因的野指针、多线程引起的访问冲突、无缘无故的内存异常。

C++像一匹脱缰的野马,四处乱窜,而我却完成不能驾驭。

我不得不发出一声叹息:“DT的C++啊~~!”


幸好,得到前辈的指点,告诉我调试C++的一个简单的方法:“看汇编吧”。。

是啊,函数那么长,变量那么多,还有编译器的优化和inline函数的干扰,想从函数调用栈这个单薄的信息找到程序崩溃的关键原因,谈何容易。

只有汇编了。

通过汇编,我终于看到了真实的C++,那个隐藏在表达式、变量、函数、类和模板背后的C++。

也通过这些调试的经历,认识到了作为一个C++的程序员,具有底层实现知识的素质是多么重要。

只有了解了C++实现的基本方法和模型,才能更好的驾驭这匹骏马。


于是就在上个星期,我买下了Stanley B.Lippman著,侯捷译的《深度探索C++对象模型》(英文原名:"Inside The C++ Object Model")。

开始了解那些C++代码背后的世界。

这本书有7章,从C++对象的整体、构造函数等到异常处理、模板。介绍了C++对象背后,编译器层面所作的工作。

  • 第1章,关于对象。是从整个对象的全局观来审视C++,并对比C++和C,讨论出一个较为高效和简明的C++对象模型。
  • 第2章,构造函数语意学。这一章将C++隐藏在背后的构造函数搬到台前,告诉我们它是如何实现,并高效工作的。
  • 第3章,Data语意学。讨论了成员变量是如何处理的。
  • 第4章,Function语意学。除讨论了一般的成员函数外,还重点介绍了如何支持虚函数。
  • 第5章,构造、析构(原文用解构,可能是台湾的用法吧。。)、拷贝语意学。讨论了这些特殊函数是如何影响C++类的。
  • 第6章,执行期语意学。将执行期的某些对象行为展现出来,包括临时对象的创建、销毁,以及new、delete的支持。
  • 第7章,在对象模型的尖端。讲述了对一些C++高级语法的支持,包括异常处理、模板、动态类型检测。

从我刚开始读这本书的感受看来,这确是本好书,利用框图、代码和详细的讨论,包括不同实现方式之间的对比、与C语言的对比,再加上一些实例,试图将晦涩的C++解剖开来,清晰的展现在眼前。

之后我会逐步的,通过我自己的理解,将这本书的精彩内容呈现给大家,同大家分享,请大家指正。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值