在为数据类型创建别名时,我们可以使用 typedef
和 using
关键字。但是二者有什么不同呢 🤔,下面笔者抛砖引玉,做一个简单的介绍。
1. typedef
typedef
是 C++
中较早引入的一种方法,用于为数据类型创建别名。其基本语法如下:
typedef <existing_type> <new_type_name>;
<existing_type>
是已经存在的数据类型,而<new_type_name>
是为该数据类型创建的新名称。
typedef int Integer; // 创建一个名为Integer的别名,代表int类型
使用 typedef
可以为各种数据类型创建别名,包括基本数据类型(如 int
、float
等)、指针、数组等。
2. using
using
是C++11引入的一种新方法。
语法如下:
using <new_type_name> = <existing_type>;
<existing_type>
是已经存在的数据类型,而<new_type_name>
是为该数据类型创建的新名称。
using Integer = int; // 创建一个名为Integer的别名,代表int类型
与typedef不同,using关键字允许创建模板别名,从而提供了更大的灵活性。
3. 二者差异
- 语法差异:
typedef:typedef <existing_type> <new_type_name>;
using:using <new_type_name> = <existing_type>;
- 可读性:
using更直观,因为它将新名称放在等号的左侧。 - 支持模板:
using
可以创建模板别名,而typedef
不能。 - 可替代性:
using
可以替代几乎所有typedef
的用法,并且在C++11
中已被推荐使用。
// 使用typedef创建别名
typedef int Integer_t;
Integer_t num1 = 10;
// 使用using创建别名
using Integer_u = int;
Integer_u num2 = 20;
// 使用using创建模板别名
template<typename T>
using Pointer_u = T*;
Pointer_u<int> ptr = new int(30);
以上就是一个简单的介绍,感兴趣的朋友可以去参考下面 c++的使用文档。
using from cppreference
typedef from cppreferrence