为什么指针在C ++中起作用?

时间:2014-04-21 15:59:16

标签: c++ function pointers

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

谢谢。

2 个答案:

答案 0 :(得分:5)

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

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

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

但是当某些软件(例如C库,)需要函数指针时,你不能这样做。

通常函数指针更方便。

答案 1 :(得分:1)

示例:

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;
    }
}