A Primer on Initialization
118.35 KB
14 页
0 评论
| 语言 | 格式 | 评分 |
|---|---|---|
英语 | .pdf | 3 |
| 摘要 | ||
文档系统阐述了C++中的初始化机制,包括初始化的高层视图、语法和类型。不同类型的初始化方法如默认初始化、直接初始化、列表初始化、聚合初始化和零初始化分别被解释。代码示例展示了这些初始化方法在不同情境下的应用,如基本类型初始化、类对象初始化和数组初始化。特别讨论了C++11引入的统一初始化语法及其影响。 | ||
| AI总结 | ||
以下是对文档《A Primer on Initialization》内容的总结,语言简洁明了,重点突出核心观点和关键信息:
---
### 《A Primer on Initialization》总结
#### 1. 初始化概述
- 初始化是C++编程中的核心概念,直接影响程序的行为和安全性。
- 不同类型的对象(基础类型、类、聚合体)在初始化方式和结果上有所不同。
#### 2. 初始化语法
- 初始化的基本语法形式包括:
- `T object = value;`
- `T object(value);`
- `T object{value};`(C++11统一初始化语法)
- `T array[] = {value1, value2, ...};`
#### 3. 初始化类型
- **默认初始化**:
- 基础类型:未定义行为(Undefined Behavior)。
- 类类型:调用默认构造函数(若有),否则成员未定义。
- 聚合体:逐个元素应用默认初始化。
- **直接初始化**:
- 基础类型:直接用参数初始化。
- 类类型:选择最匹配的构造函数(显式或隐式)。
- 聚合体:逐个元素直接初始化。
- **值初始化**:
- 基础类型:初始化为0(零初始化)。
- 类类型:调用默认构造函数。
- 聚合体:逐个元素零初始化。
- **列表初始化(C++11统一初始化)**:
- 使用大括号 `{}` 初始化对象。
- 禁止 narrowing conversions(缩窄转换)。
- **零初始化**:
- 对象被设置为0(或相应类型的零值)。
- **复制初始化**:
- 对象从另一个对象复制初始化。
- **聚合初始化**:
- 对聚合体(如数组、结构体)的逐元素初始化。
#### 4. 特殊情况与示例
- **基础类型示例**:
```cpp
int a; // 未定义行为
int x = {}; // x = 0
int b(3.14); // b = 3 (截断)
int c{3.14}; // 编译错误(禁止缩窄转换)
```
- **类类型示例**:
```cpp
class Constr { public: int h; float s; };
Constr obj1; // Default constructor called
Constr obj2{}; // h = 0, s = 0
```
- **容器示例**:
```cpp
vector | ||
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
下载文档到本地,方便使用
- 可预览页数已用完,剩余
2 页请下载阅读 -
文档评分













