第2.19章: using 与 typedef

English

概述

C++ 允许你创建类型别名:已有类型的新名字。 历史上这通过 typedef 实现。现代 C++ 更倾向于 using,它的语法更清晰,并避免了许多可读性问题。

在本章中,你将学到:

1. 什么是类型别名?

类型别名就是已有类型的另一个名字。它并不创建 新类型——它只创建一个新名字。


int x{42};
int y{0};   // same type as x

当类型很长、重复出现或频繁使用时,类型别名就很有用。

2. typedef —— 老办法

typedef 是经典的 C 风格类型别名写法。


typedef int my_int;

my_int x{42};   // x is an int

语法是:


typedef existing-type new-name;

这样能工作,但遇到更复杂的类型时就会变得混乱。

3. 用 typedef 定义引用

typedef 也可以为引用类型起别名。


typedef int& int_ref;

int value{42};
int_ref r = value;   // r is an int&

别名 int_ref 的行为与 int& 完全相同。

4. using —— 现代办法

现代 C++ 为类型别名引入了 using。它的语法更清晰:


using new-name = existing-type;

示例:


using my_int = int;

my_int x{42};   // x is an int

新名字在左,已有类型在右——就像赋值一样。 这使 using 更易读。

5. 用 using 定义引用

用 using 定义引用别名也更加清晰。


using int_ref = int&;

int value{42};
int_ref r = value;   // r is an int&

& 清楚地归属于右侧的类型。

6. 为什么首选 using

在现代 C++ 中:

对于新代码,你应当始终优先使用 using 而不是 typedef。

7. 最佳实践

要点