typedef 和typedef typename区别
时间: 2024-08-11 22:01:35 浏览: 57
c++中typename和class的区别介绍
5星 · 资源好评率100%
`typedef` 是 C++ 中的一个关键字,用于创建新的数据类型别名,使得我们可以给已存在的数据类型起一个新的名字,以便于代码的可读性和重用。例如:
```cpp
typedef int MyInt;
MyInt x; // 等价于 int x;
```
而 `typename` 是 C++11 引入的一个关键词,它出现在模板类型的声明前,主要用于模板元编程(Template metaprogramming)。`typename` 是为了明确区分类型名称和变量名称,因为在某些复杂的模板场景下,如果仅使用 `typedef`,编译器可能会难以确定是否需要解析为类型还是变量。例如:
```cpp
template <typename T>
struct MyTemplate {
void func(T t) { ... }
};
```
在这个例子中,`typename` 明确告诉编译器 `T` 是一个类型名。
阅读全文