函数指针
定义:其本质是一个指针变量,就是指向函数的指针。
int (*fun)(int x,int y);
调用函数指针的方式也有两种:
x = (*fun)();
x = fun();
- 指向普通函数
#include <iostream>
using namespace std;
int add(int a, int b){
return a + b;
}
int main(void)
{
int (*fun_p)(int, int);
fun_p = add;
cout << fun_p(1, 6) << endl;
return 0;
}
- 指向类的成员函数
#include <iostream>
using namespace std;
class A
{
public:
int var1, var2;
int add(){
return var1 + var2;
}
};
int main()
{
A ex;
ex.var1 = 3;
ex.var2 = 4;
int *p = &ex.var1; // 指向对象成员变量的指针,和普通变量一样
cout << *p << endl;
int (A::*fun_p)();
fun_p = A::add; // 指向对象成员函数的指针 fun_p
cout << (ex.*fun_p)() << endl;
return 0;
}
特别注意:定义指向成员函数的指针时,要标明指针所属的类。
指针函数
定义:是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。
int *fun(int x,int y);
注意:在调用指针函数时,需要一个同类型的指针来接收其函数的返回值。不过也可以将其返回值定义为 void*类型,在调用的时候强制转换返回值为自己想要的类型,如下:
void* f(int a,int b){
Data * data = new Data;
data->a = a;
data->b = b;
return data;
}
//调用:
Data * myData = static_cast<Data*>(f(4,5));