#include <iostream>
using namespace std;
typedef int (*fun)(int);
//定义函数指针类型 此时fun为函数指针类型
int demo(int a){
cout<<a<<endl;
return a;
}
int main()
{
//直接定义函数指针变量
int (*func)(int);
// func = demo;
func = &demo;
//以上两种方法都可以
func(1);//调用
fun a;//声明一个函数指针类型变量
a = demo;
a(1);
cout << "------------------" << endl;
return 0;
}
类函数指针用法:
定义指向公用成员函数的指针变量的一般形式为:
数据类型名 (类名::*指针变量名)(参数表列)
使指针变量指向一个公用成员函数的一般形式为:
指针变量名 = &类名::成员函数名;
在Visual C++中,也可以不写&,以和C语言用法一致,但建议在写C++程序时不要省略&
调用成员函数的形式:
(实例变量.*函数指针变量名)();
//因为成员函数地址的解引用必须要附驻与某个对象的地址,所以我们必须创建某个对象来调用
#include <iostream>
using namespace std;
class Test{
public:
int run(int a){
cout<<a<<endl;
return a;
}
void play(){
cout<<"play"<<endl;
}
};
typedef int (Test::*f)(int);//也可以直接声明函数指针类型
int main()
{ Test test;
int (Test::*fu)(int);//指针名前一定要加上所属类型类名 A::的限定
fu = &Test::run;
(test.*fu)(2);
f funct;
funct = &Test::run;
(test.*funct)(3);
return 0;
}可以具体看看下面这篇文章
http://blog.youkuaiyun.com/sruru/article/details/7916296
本文详细介绍了C++中函数指针的基本使用方法,包括普通函数指针的定义与调用,以及类成员函数指针的定义方式、如何指向具体的成员函数并进行调用。通过示例代码帮助理解。
530

被折叠的 条评论
为什么被折叠?



