C++批判:第三版英文版 - Ian Joyner

需积分: 0 0 下载量 32 浏览量 更新于2024-12-15 收藏 352KB PDF 举报
"C++批判(第三版,英文版)由Ian Joyner撰写,是一本针对C++编程语言的深入分析和批判的书籍,探讨了90年代的编程语言趋势。作者在书中阐述的观点并不代表其雇主的立场。本书分为两大部分:介绍和C++特定的批评。" 在1996年的《C++批判》第三版中,作者Ian Joyner对C++编程语言进行了全面的评价,既指出了它的优点,也揭示了其潜在的问题和局限性。这本书旨在促进对编程语言设计和实践的深入理解。 1. 引言 (INTRODUCTION):Joyner在此部分为读者引入了讨论的主题,即编程语言的角色及其对软件开发的影响。 2. 编程语言的角色 (THE ROLE OF A PROGRAMMING LANGUAGE):这部分详细探讨了编程语言的多个方面,包括编程作为沟通工具、抽象与精确度、符号表示、工具集成、正确性、类型系统、冗余检查、封装、安全性和礼貌性考虑、实现与部署的考量。Joyner强调了这些因素在构建高效、健壮和易于维护的软件中的重要性。 3. C++特定的批评 (C++ SPECIFIC CRITICISMS):这是书中的核心部分,Joyner逐一分析了C++的特性,并提出了批评: - 虚函数 (VIRTUAL FUNCTIONS):Joyner讨论了虚函数在多态中的作用以及可能带来的问题。 - 全局分析 (GLOBAL ANALYSIS):他质疑全局变量和全局状态对代码可读性和可维护性的影响。 - 类型安全链接 (TYPE-SAFE LINKAGE):Joyner指出C++的链接过程可能存在的不安全性。 - 函数重载 (FUNCTION OVERLOADING):分析了重载在不同上下文中的利弊。 - 继承的本质 (THE NATURE OF INHERITANCE):Joyner探讨了继承的概念和潜在问题。 - 多重继承 (MULTIPLE INHERITANCE):他警告了多重继承可能导致的复杂性和二义性。 - 虚类 (VIRTUAL CLASSES):讨论了虚类在多层继承中的挑战。 - 模板 (TEMPLATES):Joyner评论了模板的灵活性和编译时膨胀的问题。 - 名称重载 (NAME OVERLOADING):提出了名称重载可能引起的混淆。 - 嵌套类 (NESTED CLASSES):分析了嵌套类的用处和潜在复杂性。 - 全局环境 (GLOBAL ENVIRONMENTS):讨论了全局变量对代码组织的影响。 - 多态与继承 (POLYMORPHISM AND INHERITANCE):Joyner深入研究了这两个概念的关系和它们在C++中的实现。 - 类型转换 (TYPECASTS):他讨论了不同类型的转换操作及其风险。 - RTTI (RUN-TIME TYPE INFORMATION) 和类型转换:Joyner评估了RTTI在动态类型检查中的角色。 - 新的类型转换 (NEW TYPECASTS):他介绍了C++98引入的新的类型转换方式。 - Java和类型转换 (JAVA AND CASTS):比较了Java与C++在类型转换上的差异。 - 点运算符和箭头运算符 ('.' 和 '->'):Joyner解释了这两个运算符在面向对象编程中的用法。 - 类定义中的匿名参数 (ANONYMOUS PARAMETERS IN CLASS DEFINITIONS):他指出这种做法可能带来的问题。 - 无名构造函数 (NAMELESS CONSTRUCTORS):Joyner讨论了没有显式命名的构造函数可能带来的困惑。 通过这些深入的讨论,Joyner鼓励程序员对C++有更全面的认识,以便在实际项目中做出明智的设计决策。尽管这是一本批判性的著作,但也是对C++深入理解的重要参考资料。