第2.19章: using 与 typedef
概述
C++ 允许你创建类型别名:已有类型的新名字。
历史上这通过 typedef 实现。现代 C++ 更倾向于
using,它的语法更清晰,并避免了许多可读性问题。
在本章中,你将学到:
typedef如何工作using如何工作- 为什么
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具有更清晰、类似赋值的语法using避免了typedef令人困惑的语法using更易读、更易维护
对于新代码,你应当始终优先使用 using 而不是
typedef。
7. 最佳实践
- 所有新的类型别名都使用
using - 只在阅读或维护旧代码时使用
typedef - 选择清晰、有描述性的别名
- 教初学者时避免把引用类型隐藏在别名里
- 记住别名不会创建新类型
要点
- 类型别名只是已有类型的新名字。
typedef是老的 C 风格别名语法。using是现代、更清晰的别名语法。- 所有新代码都应优先用
using。