using和define 和typedef区别
时间: 2023-07-16 09:16:01 浏览: 81
`using`,`define`和`typedef`都是用来定义别名的关键字,但它们有一些不同之处。
- `using`是C++11引入的关键字,它可以定义类型别名,也可以定义模板别名。`using`定义的别名可以像实际类型一样使用,包括类型转换、模板参数等。
- `define`是C/C++中的预处理指令,用于定义宏。宏定义不是类型别名,而是在编译时将宏名替换为宏定义的内容。因此,宏定义不能进行类型转换等操作。
- `typedef`是C/C++中定义类型别名的关键字。它可以用来给现有类型起一个新的名称。`typedef`定义的别名可以像实际类型一样使用,但不能定义模板别名。
下面是一个示例,展示了这三个关键字的用法:
```c++
#include <iostream>
// using定义类型别名
using my_int = int;
// define定义宏
#define MY_INT int
// typedef定义类型别名
typedef int myInt;
int main() {
my_int a = 10;
MY_INT b = 20;
myInt c = 30;
std::cout << a << " " << b << " " << c << std::endl;
return 0;
}
```
在上面的示例中,`my_int`、`MY_INT`和`myInt`都是`int`类型的别名。但是,`my_int`和`myInt`是用`using`和`typedef`定义的类型别名,可以像`int`类型一样使用,而`MY_INT`是宏定义,不能进行类型转换等操作。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)