定義類型別名有2種方法:
(1)typedef關(guān)鍵字
(2)using關(guān)鍵字
int:
typedef int myInt; //myInt是int的別名
//等價(jià)于
using myInt = int; //myInt是int的別名
double:
typedef double myDouble; //myDouble是double的別名
//等價(jià)于
using myDouble = double; //myDouble是double的別名
string:
typedef string myString; //myString是string的別名
//等價(jià)于
using myString = string; //myString是string的別名
類:
#include "Student.h"
typedef Student MyStu; //MyStu是Student的別名
//等價(jià)于
using MyStu = Student; //MyStu是Student的別名
引用:
typedef int& myRef; //myRef是int&的別名
//等價(jià)于
using myRef = int&; //myRef是int&的別名
指針:
typedef int* myPoint ; //myPoint是int *的別名
//等價(jià)于
using myPoint = int*; //myPoint是int *的別名
這么多例子看來,使用typedef和using,別名只不過和類型換了位置而已。
比較特殊的是數(shù)組,定義一個(gè)大小為4的數(shù)組的別名:
typedef int int_array[4]; //int_array是int[4]的別名
//等價(jià)于
using int_array = int[4]; //int_array是int[4]的別名
定義別名之后:
int_array a1;
//等價(jià)于
int a1[4];
如果typedef和using一起寫,且含義相同,沒有問題箱玷。不需要考慮誰覆蓋誰,因?yàn)槎家粯樱?/p>
using int_array = int[4];
typedef int int_array[4]; /編譯通過
int_array a1;
但如果2者定義相同的別名陌宿,含義有沖突锡足,比如數(shù)組大小定義上兩者不一致,會報(bào)錯(cuò):
using int_array = int[4];
typedef int int_array[5]; //與第一行定義的類型別名沖突限番,此行會報(bào)錯(cuò)
int_array a1;
</br>
送分題:
typedef int int_array[10];
int_array *p;
第二句等價(jià)于舱污?