主要观点:总结了 C++ 编程语言的主要缺陷,包括编译时封装缺失、语法极其复杂、无法定位定义、运行时封装缺失、无二进制实现规则、无反射、类型系统复杂、基于类型的绑定规则复杂、操作符重载有缺陷、异常处理有缺陷、设施重复、无高级内置类型、手动内存管理、元编程设施有缺陷、标准库无用、内联有缺陷、隐式调用和生成函数等。
关键信息:
- C++接口不稳定,因修改私有成员需重新编译。
- 语法复杂导致编译慢、错误信息难懂、不同编译器解析不同。
- 难以定位定义,编译需多次处理文件。
- 运行时无封装易导致程序行为难以理解。
- 无标准二进制实现规则,调试和使用接口困难。
- 无反射,影响生成包装器和处理内存快照。
- 类型系统复杂,代表类型困难,转换规则复杂。
- 基于类型的绑定规则复杂,导致重载问题。
- 操作符重载有缺陷,与其他特性交互不佳。
- 异常处理有缺陷,代码实现异常安全困难。
- 存在设施重复,不同方式不互操作且新特性有时不如旧 C 特性。
- 无高级内置类型,导致工具处理困难和一些功能受限。
- 手动内存管理与其他特性不兼容,复制和智能指针是常见解决方案。
- 元编程设施有缺陷,模板存在诸多问题且依赖其进行基本编程任务。
- 标准库存在问题,模板导致错误消息复杂,功能不全。
- 内联支持粗糙,导致编译慢和频繁重新编译。
- 隐式调用和生成函数增加编译时间、膨胀程序二进制和阻碍调试。
重要细节:
- 如在解析 AA BB(CC);时,因 C++语法的上下文敏感性,其是对象定义还是函数声明取决于之前的代码。
- C++中编译程序需多次处理文件,预编译头文件仅对几乎不变化的定义有效。
- 无运行时封装使程序易出现随机对象被修改等问题,调试困难。
- 不同编译器的二进制实现规则不同,增加调试难度。
- 类型系统中 typedef 展开等问题体现其复杂性,类型转换规则复杂且不合理。
- 基于类型的绑定规则复杂导致编译器和程序员理解出错,重载问题突出。
- 操作符重载在返回值等方面存在缺陷,与其他特性交互差。
- 异常处理在代码实现和调试方面存在诸多问题。
- 设施重复导致代码混乱,C++对 C 特性的态度矛盾。
- 无高级内置类型使标准库使用和调试困难。
- 手动内存管理与其他特性冲突,复制和智能指针各有问题。
- 元编程设施模板存在多种问题,依赖其进行基本任务不合理。
- 标准库模板导致错误消息复杂,功能不全,如不支持某些常见操作。
- 内联支持粗糙,导致编译慢和频繁重新编译,且无需实际编写内联函数也有影响。
- 隐式调用和生成函数增加编译时间、膨胀程序二进制和阻碍调试,且对象传递方式不明确。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。