C++ 函数的扩展④--函数重载与函数指针

//函数扩展--函数重载与函数指针
#include<iostream>
using namespace std;


//函数参数类型不同
void Fuc(char * b){
    printf("%s
",b);
}

//函数参数个数不同
int Fuc(int a, int b){
    return a + b;
}

//函数参数类型不同
void Fuc2(const char * b){
    printf("%s
", b);
}

void main(){
    //定义函数指针类型
    //引申  定义数组类型
    typedef int MyArr[10];//定义了一个 int a[10]的数组
    MyArr a;
    typedef int(*MyArrP)[10];//定义了一个 int a[10]的数组类型指针
    MyArrP p = &a;

    //函数指针类型(这里也验证了 函数重载的函数都是不同函数类型的)
    typedef int(*FuncP)(int, int);
    FuncP p1 = Fuc;//Fuc是一个函数名,函数名代表函数的入口地址,函数名就是函数指针变量
    typedef void(*FuncP2)(char *);
    FuncP2 p2 = Fuc;
    p2("函数指针你好!");

    typedef void(*FuncP3)(const char *);
    typedef void(*FuncP4)(char *);
    //注意 定义函数类型的时候  const 等关键字也不能省略
    FuncP3 p3 = Fuc2;
    //FuncP4 p4 = Fuc2;
    //报错 error C2440: “初始化”: 无法从“void (__cdecl *)(const char *)”转换为“FuncP4”
    system("pause");
}
原文地址:https://www.cnblogs.com/zhanggaofeng/p/5588017.html