c++ 函数指针用法

目录
调用全局函数
调用静态成员函数
调用普通成员函数
调用const成员函数
       首先我们定义一些函数,分别使用函数指针调用它们。//自定义类

class CTest
{
public:
    CTest():m_nA(0),m_nB(0)
    {}

    //静态函数
    static int Add(int a, int b,int c)
    {
        std::cout << "CTest::Add(int a,int b,int c)" << std::endl;
        return a + b + c;
    }

    //普通成员函数
    int Add(int a)
    {
        std::cout << "CTest::Add(int a)" << std::endl;
        return a;
    }

    //const成员函数
    int Add(int a, int b) const
    {
        std::cout << "CTest::Add(int a,int b) const" << std::endl;
        return a + b;
    }

private:
    int m_nA;
    int m_nB;
};

//全局函数
int Add()
{
    std::cout << "Add()" << std::endl;
    return 0;
}
int Add(int a, int b)
{
    std::cout << "Add(int a,int b)" << std::endl;
    return a + b;
}

调用全局函数

int main()
{
    //定义一个函数指针变量
    int(*pFun1)() = nullptr;//全局函数
    int(*pFun2)(int a, int b) = nullptr;//全局函数

    //赋值对应的函数
    pFun1 = &Add;
    pFun2 = &Add;

    //调用该函数指针变量
    int nRt1 = pFun1();        //Add()
    int nRt2 = pFun2(4,7);    //Add(int a,int b)

    std::cout << nRt1 << std::endl;//0
    std::cout << nRt2 << std::endl;//11
}

调用静态成员函数

int main()
{
    //定义一个函数指针变量
    int(*pFun3)(int a, int b, int c) = nullptr;//静态成员函数

    //赋值对应的函数
    pFun3 = &CTest::Add;

    //调用该函数指针变量
    int nRt3 = pFun3(1,2,3);//CTest::Add(int a,int b,int c)

    std::cout << nRt3 << std::endl;//6
}

调用普通成员函数

int main()
{
    //定义一个函数指针变量
    int(CTest::*pFun4)(int a) = nullptr;//普通成员函数

    //赋值对应的函数
    pFun4 = &CTest::Add;

    //调用该函数指针变量
    CTest t;
    int nRt4 = (t.*pFun4)(4);//CTest::Add(int a)

    std::cout << nRt4 << std::endl;//4
}

调用const成员函数

int main()
{
    //定义一个函数指针变量
    int(CTest::*pFun5)(int a,int b) const = nullptr;//const成员函数

    //赋值对应的函数
    pFun5 = &CTest::Add;

    //调用该函数指针变量
    CTest t2;
    int nRt5 = (t2.*pFun5)(4,9);//CTest::Add(int a,int b) const

    std::cout << nRt5 << std::endl;//13
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值