typedef用法

typedef的作用:
1)用typedef简化指向多维数组的指针的定义(C++primer P124)
2)用typedef简化函数指针的定义(C++primer P237)
3) 用typedef简化复杂类型的定义,如pair类型和map的value_type(C++primer P307,P313)
下面转自http://book.douban.com/annotation/13487433/
对typedef用法的领悟:
以前一直以为typdef的用法不过是typedef A B就是把类型B作为类型A的一个新名字。但是碰到像typedef string *pstring或者是typedef int int_array[4]这样的定义就比较傻眼。
然后慢慢摸爬滚打明白了typedef的精髓。那就是typdef,定义什么就是什么。
比如定义一个string类型的指针变量,是string *str1;这个时候str1是变量名。
如果把这句话前面加上一个typdef,也就是typedef string *str2;这个时候str2就不是变量名,而是类型名,它的类型就是变量str1所具有的类型。也就是string *类型。
所以typedef string *pstring这句话的意思就豁然开朗了,那么我以后可以拿pstring去定义别的变量,不如pstring pstr;这就定义了一个指向string的指针对象pstr。
再比如typedef int int_array[4];如果去掉前面的typedef那么定义的是一个叫做int_array的含有4个元素的数组。前面加上typedef以后,int_array就变成了含有4个元素的数组类型的替代名。以后要有int_array ia;这句话我们就知道它等同于int ia[4];
再比如这一页的指向函数的指针:
bool (*pf)(const string&, const string&)
使用typdef以后,定义这一类型(即同样的形参以及同样的返回类型)的函数指针语句都将得到简化。方法如下:
typedef bool (*cmpFcn)(const string&, const string&);
用新得到的类型来定义两个新的函数指针pf1和pf2,它们所指向的函数都有两个const string&形参且返回bool类型值。以下是定义:
cmpFcn pf1;
cmpFcn pf2;
不过实际应用中这种小细节的东西用的应该不会很多。也算一点并不实用的领悟吧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值