EffectiveC++条款35部分代码理解

EffectiveC++条款35部分代码理解

p172页的typedef和函数指针(function pointer)

文中有这样一段代码

typedef int (*HealthCalcFunc)(const GameCharacter&);

首先理解typedef的用法:
参考typedef的用法,C语言typedef详解
当然里面并没有提到type和函数指针的情况,实际上typedef的作用是
连接名字和类型,具体一点就是将一种类型和一个你自己取的名字连接起来,能够用名字替代类型。
举个例子

  typedef int myinteger;//为基本数据类型定义新的类型名
  typedef char *mystring;//为指针定义简洁的名字

那么在使用时就可以把int 类型替换为mtinteger,把char*替换为mystring
函数指针也是指针,只是指向的是函数而非对象,比如

bool LengthCompare(const string &,const string &)

声明一个指向该函数的函数指针,只需要用指针特换函数名即可

bool (*pf)(const string&, const string&);//未初始化

声明了一个函数指针,这个指针指向的是这么一个函数:返回值是bool类型,接受的参数是const string&和const string&.
在这个函数指针声明前添加typedef,那么就把这个函数指针类型和pf这个你自己定义的名字连接到了一起。
将书中的下一行代码和简单的代码int*typedef进行一个对比

typedef int* mystring;
mystring a;//定义int*类型的对象a

typedef int (*HealthCalcFunc)(const GameCharacter&);
HealthCalcFunc hcf = defaultHealthCalc//定义HealthCalcFunc类型的函数指针hcf,并赋值初始化

函数名实际上也是函数指针,相当于指针赋值。
针对函数指针的typedef和对其他类型的不太一样,因为把类型名字写在一个语句里了。C++11版本里提出了另一种用法

using HealthCalcFunc = int(*)(const string&, const string&)

参考链接

[1]Typedef function pointer?
[2]谁能帮我解释一下C++中typedef的用法
[3]函数指针

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值