我理解的函数指针使用场景是在代码运行过程中,我们可以动态的选择和执行特定函数。函数指针需要定义函数的输入和输出类型,这和抽象类里面定义函数是一样的。
相对于抽象类,函数指针不需要很多代码去定义抽象类,只需要定义函数,可能更轻便。 但是我感觉函数指针的可读性和可维护性要更差一些,如果是大型项目也许抽象类是更好的实现方式?
不知道大家在实际中是怎么选择用抽象类还是函数指针。欢迎讨论!
函数指针代码示例
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;
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.