高级 class 功能和 C++ 标准库,关于示例的一些问题

Advanced class features and C++ standard libraries, some questions about example

我无法理解 C++ 的一些高级功能。 我正在尝试编写我自己的 signals/slots 系统,发现示例和 运行 进入一些问题:

谢谢。

按顺序回答您的问题:

  • Signal() : current_id_(0) {}

这是 Signal 构造函数中的初始化列表。它告诉编译器当使用那个 c'tor 构造 Signal 对象时,current_id_ 应该初始化为 0。

  • int connect_member(T *inst, void (T::*func)(Args...)) {

T::是scope-resolution,T::*特指成员函数。函数调用 connect_member 期望收到一个指向-T 的指针,然后是一个指向-T 成员函数的指针(它采用未指定的参数和 returns 没什么)

  • mutable std::map<int, std::function<void(Args...)>> slots_;

slots_Signal 的数据成员,类型 map 从整数到函数返回空值。 mutable 关键字告诉编译器可以更改 slots_ 即使拥有的 Signalconst(例如,在声明为 const 的成员函数中) ).