C/C++可以通过使用typedef为类型定义别名,C++11增加了通过使用using来定义类型别名的方式,与typedef可以认为是等价的:
#include <iostream>
using namespace std;
using sint = int;
typedef int SINT;
int main(){
cout<<is_same<sint, SINT>::value<<endl;
return 0;
}
运行程序输出:1
可见这两种类型定义的别名是等价的
定义通常类型的别名还是比较简单,那么如果定义函数类型及函数指针类型的别名呢:
#include <iostream>
using namespace std;
typedef int TF(int, int); //typedef定义函数类型
typedef int (*PTF)(int, int); //typedef定义函数指针类型
using UF = int(int, int); //using定义函数类型
using PUF = int (*)(int, int); //using定义函数指针类型
int add(int a, int b)
{
return a + b;
}
int main()
{
TF *tf = add;
cout<<"add(1,2)="<<tf(1,2)<<endl;
PTF ptf = add;
cout<<"add(3,4)="<<ptf(3,4)<<endl;
UF *uf = add;
cout<<"add(5,6)