
秦连松
本书基于GCC/Clang编译器深入讲解C++对象模型的相关知识,涵盖C++对象的内部工作原理及底层的汇编实现机制。 本书先介绍对象模型的基本概念,并引入两个用于研究C++代码实现的开源工具一cppinsights和 Compiler Explorer。接着,依次讲解C++数据语义学,即编译器如何布局C++对象模型中的数据成 C++函数语义学,包括编译器如何实现C++中的多态、如何调用虚函数等;C++构造、析构语义学,涉及编译器对 C++对象的构造和析构方式,包括全局对象和静态局部变量的构造等内容;C++异常处理,包括GCC中异常处理的实现方式及实践准则;C++运行时类型识别(RTTI)的实现原理,包括 dynamic_cast算法的具体实现;C++Name Mangling规则,包括GCC对C++代码中各个名称的编码方式。 本书适合有意深入理解C++对象模型、了解C++代码底层实现的读者阅读。阅读本书需要具备一定的C++基础知识。
我觉得本书写的太过于学术化了,真正开发过程中用到的知识只占30%不到,大部分都完全用不上。但你要说他写的真的很全很到位的话,很多地方又讲的不够清楚,明白,比如在计算有虚继承,虚函数的类大小时,举例子的时候又不说清楚是怎么算的,只说结果难以阅读。总之在我看来,这本书可读性差,实用性更差。断续看了一周,觉得里面最有价值的可能就是关于左值,将亡值和右值的讲解以及那两个工具。看到那个将类分类,比如几乎空类等等等等那一块的时候,我真的感觉太教条化了,当场就想合上这本书。读完没搞懂作者写这本书的阅读对象是谁,应该不是给广大工程师写的!