1typedef&using 类型定义别名
cpp
#include<iostream>
using namespace std;
void f(int index) //事例函数指针
{
cout << "void f(int)->" << index << endl;
}
int main()
{
//typedef: 旧名 新名
typedef unsigned int x;
//using: 新名=旧名
using y = unsigned int;
//函数指针拉开二者区别
void(*i)(int) = f; //最原始的函数指针
typedef void(*x2)(int); //不熟悉typedef和函数指针的看不出来x2是别名
using y2 = void(*)(int); //这个就非常简单明了y2就是别名
return 0;
}
2模板定义别名
cpp
#include<iostream>
#include<vector>
#include<map>
using namespace std;
template<typename T = int>
//typedef vector<T> k; //报错 typedef做不到
class base { //正确:typedef需要一个类辅助
public:
typedef vector<T> k;
};
template<typename T = int>
using t = vector<T>;
int main()
{
t<> x = { 1,1,1,1 };
for (auto i : x)
cout << i << " ";
base<>::k y = { 2,2,2,2 };
return 0;
}
最后在强调一点:using语法和typedef一样,并不会创建出新的类型,它们只是给某些类型定义了新的别名。using相较于typedef的优势在于定义函数指针别名时看起来更加直观,并且可以给模板定义别名。