C++ 函数指针

1 、函数指针的定义

int (*fp)(int a);//定义了一个指向函数的指针

int *fp(int a);//错误,这是一个返回整形指针的函数了,而不是函数指针。

int _tmain(int argc, _TCHAR* argv[])
{
	
	//////////////////////////////////////////////////////////////////////////Example1
	cout << FuncTestMethod <<endl; //输出函数地址
  	int (*fPtr)(int i);//定义函数指针
	fPtr = FuncTestMethod;//;//将函数FuncTestMethod的地址赋给函数指针fPtr
	cout << fPtr(5) << " | " << (*fPtr)(15) <<endl;
	//上面的输出fp(5),这是标准c++的写法,(*fp)(15)这是兼容c语言的标准写法,两种同意,但注意区分,避免写的程序产生移植性问题! 

	//////////////////////////////////////////////////////////////////////////Example2
	cout << FuncTestMethod <<endl; //输出函数地址
	typedef	int (*fPtr)(int i);//定义函数指针类型,类型名为fPtr。typedef定义可以简化函数指针的定义 
	fPtr f;//这里利用自己定义的类型名fPtr定义了一个f的函数指针! 
	f = FuncTestMethod;//;//将函数FuncTestMethod的地址赋给函数指针fPtr
	cout << fPtr(5) << " | " << (*fPtr)(15) <<endl;
	//上面的输出fp(5),这是标准c++的写法,(*fp)(15)这是兼容c语言的标准写法,两种同意,但注意区分,避免写的程序产生移植性问题! 
	return 0;
}
int FuncTestMethod(int i)
{
	return i;
}

  

2、函数指针所指向的函数,必须为全局函数或类的静态函数

class FuncPtr
{

	typedef int (*func)(void);
public:
	void FuncPtrTet(func func1)
	{
		(*func1)();
	};
	static int display(void)
	{
		cout <<"display"<<endl;
		return 0;
	}
};

  

int display2(void)
{
	cout <<"display2"<<endl;
	return 2;
}

  实现

int _tmain(int argc, _TCHAR* argv[])
{
	FuncPtr f;
	f.FuncPtrTet(FuncPtr::display);
	f.FuncPtrTet(display2);

	return 0;
}

  

 

原文链接: https://www.cnblogs.com/linlf03/archive/2011/11/17/2252525.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++ 函数指针

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/36608

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午1:22
下一篇 2023年2月8日 下午1:22

相关推荐