我理解的函数指针使用场景是在代码运行过程中,我们可以动态的选择和执行特定函数。函数指针需要定义函数的输入和输出类型,这和抽象类里面定义函数是一样的。
相对于抽象类,函数指针不需要很多代码去定义抽象类,只需要定义函数,可能更轻便。 但是我感觉函数指针的可读性和可维护性要更差一些,如果是大型项目也许抽象类是更好的实现方式?
不知道大家在实际中是怎么选择用抽象类还是函数指针。欢迎讨论!
函数指针代码示例
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; } 