在 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
更现代且通常更简洁,且在模板编程中更为强大。