30、C++ 函数指针、成员函数指针与仿函数详解

C++ 函数指针、成员函数指针与仿函数详解

1. 函数指针与引用

在 C++ 中,函数引用作为一种语言概念存在,但实际中几乎总是使用函数指针。例如,表达式 foo 是一个左值,因为它可以绑定到一个非常量类型的引用,但不能修改该左值。

函数指针(如 pf )或函数引用(如 rf )在函数调用中可以像函数名本身一样使用。因此,函数指针是一种仿函数,即可以在函数调用语法中替代函数名的对象。而函数引用不是对象,所以不是仿函数。需要注意的是,相同的调用表示法背后可能有不同的性能特征。

2. 成员函数指针

2.1 成员函数调用机制

为了理解普通函数指针和成员函数指针的区别,我们先来看成员函数调用的典型 C++ 实现。成员函数调用通常形式为 p->mf() ,其中 p 是对象或子对象的指针,它以隐藏参数的形式传递给 mf() ,在函数内部作为 this 指针。

以下是一个示例代码:

class B1 {
private:
    int b1;
public:
    void mf1();
};

void B1::mf1()
{
    std::cout << "b1 = " << b1 << std::endl;
}

class B2 {
private:
    int b2;
public:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值