严格说,它不是一种新类型,使用typedef一般用来达到以下几个目的:
1,用来定义一种类型的别名,比如说一个类型名称特别长,为了书写方便和便于代码的阅读,实现别名功能(复杂名字简单化),
typedef char* PCHAR;
PCHAR pa, pb;
struct Hello_hi_bye //假设有这么2b的名字,这么复杂
{
int b;
float c;
}//可以简化
typedef hello_hi_bye ty;
//如此以来就可以减轻写代码的负担
hello_hi_bye a;
hello_hi_bye b;
hello_hi_bye c;
//可以改写为
ty a;
ty b;
ty c;
//恩轻松多了!
2,若是在一个struct或者class里面使用的话,可以达到一种比较奇妙的效果,叫保存一种类型,有点抽象,以例子解释
#include<iostream>
struct Test
{
typedef int Aa; //Aa
float a;
int b;
};
int main()
{
Test::Aa aa = 5; //其实 aa就是int 的类型
std::cout<<aa<<std::endl; //输出5
return 0;
}
表面看,貌似多此一举,直接int a=5不就可以了吗?再看下面例子
struct Test
{
typedef ClassA Aa; //Aa
ClassA a;
int b;
};
这样的话,就可以实现一个新的功能,通过变量名字找到它的类型名
比如,我知道有个变量Test x, 我想要拿到x.a, 但是我不知道x.a是什么类型的,写代码的时候需要定义一个和x.a一样类型的变量y=来接受这个x.a, 现在的问题就是把y声明成什么类型呢?那么我们就可以这样写,
Test::Aa y = x.a;