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

      

  • 相关阅读:
    c/c++本地时间获取
    c++为什么要面向对象?
    设置c++中cout输出的字体颜色
    c++11并行、并发与多线程编程
    奇怪吸引子---RayleighBenard
    奇怪吸引子---QiChen
    奇怪吸引子---Qi
    奇怪吸引子---NoseHoover
    奇怪吸引子---NewtonLeipnik
    奇怪吸引子---LuChen
  • 原文地址:https://www.cnblogs.com/linlf03/p/2252525.html
Copyright © 2020-2023  润新知