| 语言 | 格式 | 评分 |
|---|---|---|
英语 | .pdf | 3 |
| 摘要 | ||
文档主要讨论了C++语言和标准库中存在的命名约定和设计上的不一致性,这些问题让开发者在使用过程中感到困惑和不便。作者Walter E. Brown通过多个具体例子,如数组边界、迭代器命名、类型术语混淆等,指出了这些问题的根源,并表达了希望改进的愿望。尽管这些问题并非致命缺陷,但它们确实增加了学习和使用C++的难度。 | ||
| AI总结 | ||
《Irksome C++》是Walter E. Brown对C++语言和标准库中命名、行为和设计上的诸多“quirks”(怪癖)进行批评和反思的文档。以下是主要内容的总结:
---
### 1. **命名问题:术语的不一致**
- **核心观点**:C++的命名系统在很多方面不够理想,尽管修改命名在技术上可能困难重重,但作者建议开发者提高对命名重要性的认识。
- **例子**:
- **数组**:核心语言使用“bound”描述数组大小,而标准库使用“extent”相关术语,这种不一致令人困惑。
- **迭代器**:标准库中`end()`表示“过去末尾”,而不是“末尾元素之后”,这种命名容易混淆,尤其是对新手。
- **类型术语**:类类型(class type)和类(class)的概念容易混淆,例如`union`类型是类类型但不是类。
- **命名前缀**:标准库中使用`as_`和`to_`前缀时不够一致,例如`addressof`和`tolower`等命名未遵循统一规则。
---
### 2. **行为问题:命名与实现的不一致**
- **核心观点**:C++标准库中某些功能的行为与其命名不一致,导致学习和使用上的困扰。
- **例子**:
- **max和min算法**:标准库的`max`和`min`函数返回相同结果(当参数相等时返回第一个参数),但作者认为这与命名的期望不符。
- **`as_const`和`as_const_view`**:`as_const`是函数模板,而`as_const_view`是类型,这种命名差异令人困惑。
- **`void`类型**:`void`是一个不完整的类型,无法直接使用,但其命名并未清晰传达这一特性。
---
### 3. **其他设计问题**:
- **类型设计的意外变化**:
- `nonesuch`类型原本设计为一个无法使用的类型,用于检测操作是否合法,但随着C++标准的演进,它被归类为“聚合类型”(aggregate type),导致意外行为。
- **浮点字面量的不一致性**:
- 浮点字面量的精度在不同上下文中可能变化(如`FLT_EVAL_METHOD`的影响),导致`static_assert`等断言失败。
- **`vector | ||
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
3 页请下载阅读 -
文档评分














Irksome C++