为什么指向C++中的函数

Why Pointers To Functions in C++

本文关键字:函数 C++ 为什么      更新时间:2023-10-16

我想问一下,为什么以及何时需要使用指向函数的指针?我做了一些搜索,得到的答案是,这样我们就可以在不同的时间使用不同的函数,但我们仍然可以通过直接调用函数来做到这一点,对吧?

谢谢。

函数指针提供了一种有限的多态性,在这种多态性中,您可以在不知道函数是哪个函数的情况下调用函数。

我认为在C.中没有其他方法可以做到这一点

在C++中,通过使用具有虚拟成员函数的对象可以实现大致相同的效果,该对象通过基类引用或指针访问。然后,直接使用对象指针与使用C函数指针的目的大致相同。

然而,当某些软件(如C库)需要函数指针时,您无法做到这一点。

函数指针通常更方便。

示例:

int add(int a,int b){
    return a+b;
}
int multiply(int a,int b){
    return a*b;
}
int calculate(int a, int (*fptr)(int,int),int b){
    return fptr(a,b);
}
int main(){
    int a=3,b=5;
    char ch;
    switch(ch=getch()){
         case 'a':
             cout<<calculate(a,add,b);
             break;
         case 'b':
             cout<<calculate(a,multiply,b);
             break;
    }
}