在 C++ 中,可以使用 using
或 typedef
来定义函数指针类型。对于 void (*processFunc)(Base*)
类型的函数指针,可以通过 using
来定义一个别名,使代码更简洁和易于理解。
使用 using
的等价写法
using ProcessFunc = void(*)(Base*);
解释
using ProcessFunc
是一个类型别名,它表示ProcessFunc
是一个指向接受Base*
参数并返回void
的函数的指针类型。- 这样你可以使用
ProcessFunc
来代替void (*)(Base*)
,使代码更加可读。
完整示例
#include <iostream>class Base {
public:virtual void show() {std::cout << "Base class" << std::endl;}
};using ProcessFunc = void(*)(Base*);void process(Base* b) {b->show();
}int main() {Base b;ProcessFunc processFunc = process;processFunc(&b); // 调用 process 函数return 0;
}
解释:
using ProcessFunc = void(*)(Base*);
定义了一个名为ProcessFunc
的类型别名,表示它是一个接受Base*
参数并返回void
的函数指针类型。processFunc
变量声明为ProcessFunc
类型,然后被赋值为process
函数的地址,最后通过processFunc(&b)
调用该函数。
typedef
的写法
如果你使用的是 C++98 或者更早版本的 C++,则需要使用 typedef
:
typedef void(*ProcessFunc)(Base*);
typedef
和 using
在功能上是等价的,但 using
更现代且通常更简洁,且在模板编程中更为强大。