我理解的函数指针使用场景是在代码运行过程中,我们可以动态的选择和执行特定函数。函数指针需要定义函数的输入和输出类型,这和抽象类里面定义函数是一样的。
相对于抽象类,函数指针不需要很多代码去定义抽象类,只需要定义函数,可能更轻便。 但是我感觉函数指针的可读性和可维护性要更差一些,如果是大型项目也许抽象类是更好的实现方式?
不知道大家在实际中是怎么选择用抽象类还是函数指针。欢迎讨论!
函数指针代码示例
void my_int_func(int x)
{
printf( "%d\n", x );
}
int main()
{
void (*foo)(int);
foo = &my_int_func;
foo( 2 );
return 0;
}
抽象类代码示例
class AbstractClass {
public:
virtual void my_int_func(int) = 0;
class SomeClass:public AbstractClass {
public:
void my_int_func(int x){
printf( "%d\n", x );
}
}
int main()
{
AbstractClass a = SomeClass()
a.my_int_func(2);
return 0;
}