我感觉...怪怪的,有些时候不如直接嵌套调用,总结:依情况而定
#include <iostream>
#include <string>
#include <vector>
//函数指针:将函数赋值给一个变量的方法
void HellWorld(int a )
{
std::cout<<"HellWorld,a is:"<<a<<std::endl;
}
void HellWorld2( )
{
std::cout<<"HellWorld(no pam)"<<std::endl;
}
void PrintValue(int value)
{
std::cout<<"Value:"<<value<<std::endl;
}
void ForEach(const std::vector<int>& values,void(*fun)(int))//利用函数指针改变它
{
for (int value:values) {
fun(value);
//PrintValue(value);
}
}
int main()
{
//有参无参的函数指针使用方法,且使用函数指针有两种方法
typedef void (*HellWorldFunction)(int);
HellWorldFunction function=HellWorld;
function(8);
void(*f)(int)=HellWorld;
f(3);
//无参
void(*f2)()=HellWorld2;
// auto f=HellWorld();//会报错,因为返回的类型为void
f2();
typedef void (*HellWorldFunction2)();
HellWorldFunction2 function2=HellWorld2;
function2();
//创建函数,遍历他,并且执行某个操作
std::vector<int>values={1,3,6,4,8};
ForEach(values,PrintValue);
std::cin.get();
}