定义类型别名有2种方法:
(1)typedef关键字
(2)using关键字
int:
typedef int myInt; //myInt是int的别名
//等价于
using myInt = int; //myInt是int的别名
double:
typedef double myDouble; //myDouble是double的别名
//等价于
using myDouble = double; //myDouble是double的别名
string:
typedef string myString; //myString是string的别名
//等价于
using myString = string; //myString是string的别名
类:
#include "Student.h"
typedef Student MyStu; //MyStu是Student的别名
//等价于
using MyStu = Student; //MyStu是Student的别名
引用:
typedef int& myRef; //myRef是int&的别名
//等价于
using myRef = int&; //myRef是int&的别名
指针:
typedef int* myPoint ; //myPoint是int *的别名
//等价于
using myPoint = int*; //myPoint是int *的别名
这么多例子看来,使用typedef和using,别名只不过和类型换了位置而已。
比较特殊的是数组,定义一个大小为4的数组的别名:
typedef int int_array[4]; //int_array是int[4]的别名
//等价于
using int_array = int[4]; //int_array是int[4]的别名
定义别名之后:
int_array a1;
//等价于
int a1[4];
如果typedef和using一起写,且含义相同,没有问题。不需要考虑谁覆盖谁,因为都一样:
using int_array = int[4];
typedef int int_array[4]; /编译通过
int_array a1;
但如果2者定义相同的别名,含义有冲突,比如数组大小定义上两者不一致,会报错:
using int_array = int[4];
typedef int int_array[5]; //与第一行定义的类型别名冲突,此行会报错
int_array a1;
</br>
送分题:
typedef int int_array[10];
int_array *p;
第二句等价于?