有人可以解释这个C++ typedef吗?

Dav*_*one 11 c++ typedef

我已经开始使用C++了很长一段时间没用过它.虽然大部分都是有意义的,但有一些我觉得有点困惑.例如,有人可以解释这一行的作用:

typedef bool (OptionManager::* OptionHandler)(const ABString& value);
Run Code Online (Sandbox Code Playgroud)

sth*_*sth 26

它将类型定义OptionHandler为指向类的成员函数的指针OptionManager,并且此成员函数采用类型的参数const ABString&并返回bool.


Vij*_*jay 9

typedef bool (OptionManager::* OptionHandler)(const ABString& value);
Run Code Online (Sandbox Code Playgroud)

让我们从:

OptionManager::* OptionHandler
Run Code Online (Sandbox Code Playgroud)

这表示这::* OptionHandler是该类的成员函数OptionManager.在*前面的OptionHandler说,这是一个指针; 这意味着OptionHandler是指向类的成员函数的指针OptionManager.

(const ABString& value)表示成员函数将类型的值ABString转换为const引用.

bool 说成员函数将返回一个布尔类型.

typedef说使用"*OptionHandler"可以创建许多函数指针,可以存储该函数的地址.例如:

OptionHandler fp[3];
Run Code Online (Sandbox Code Playgroud)

fp[0], fp[1], fp[2] 将存储其语义与上述说明相匹配的函数的地址.

  • 很好,你把类型分成小块,但"`::*OptionHandler`是一个成员函数":为什么不是一个简单的成员?仅在观察周围环境时才会检测到此情况. (2认同)