C++ 'Using' vs 'Typedef'

2025年5月5日 | 阅读 3 分钟

C++ 中有两个关键字可以用来定义新类型:`typedef` 和 `using`。这两个关键字都允许您创建可用于声明变量的新类型名称,但它们的工作方式略有不同。

`typedef` 是一个较旧的关键字,自 C++ 语言诞生以来一直是其一部分。它用于创建一个新的类型名称,作为现有类型的别名。例如,您可以使用 `typedef` 创建一个名为 `MyInt` 的新类型,作为内置 `int` 类型的别名

语法

定义后,您可以像使用 `int` 一样使用 `MyInt` 声明变量

代码片段

`using` 是 C++11 中引入的一个新关键字。它的工作方式与 `typedef` 类似,但它具有更灵活的语法,可以在代码中更多地方使用。例如,您可以像 `typedef` 一样使用 `using` 定义新的类型名称

代码片段

这将创建一个名为 `MyInt` 的新类型,它是内置 `int` 类型的别名。然后您可以像使用 `int` 一样使用 `MyInt` 声明变量。

总的来说,`using` 被认为是 C++ 中定义新类型名称的更现代和灵活的方式。`typedef` 仍然受支持以实现向后兼容性,但最新的代码应该使用 `using`。

以下是使用 `using` 关键字定义名为 `MyInt` 的新类型作为内置 `int` 类型的别名的示例

C++ 代码 (示例-1)

此代码将输出以下内容

x = 5

请注意,`using` 不仅限于为 `int` 等内置类型定义类型别名。您可以使用它为任何类型定义类型别名,包括用户定义类型、模板类型等。

C++ 代码 (示例-2)

输出

Size: 10
Capacity: 10
Size: 9
Capacity: 10
Size: 0
Capacity: 10

在此代码中,我们创建一个可以存储整数序列的 'vector' 对象。然后我们使用 'push_back' 方法向向量添加一些元素,并打印其大小和容量。接下来,我们使用 'pop_back' 方法从向量中删除最后一个元素,并再次打印其大小和容量

C++ 代码 (typedef 示例)

输出

10 20 30

在此代码中,我们使用 'typedef' 关键字为整数 'vector' 创建一个名为 'IntVector' 的别名。然后我们使用此别名创建一个 'vector' 对象并向其中添加一些元素。