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:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



