[C++] 将成员函数作为函数形参

函数以及函数对象都可以作为参数来增加其它函数的功能,并且通常作为STL算法的第二个版本的最后一个参数。成员函数是否可以作为形参呢?如果可以,形参表如何写呢?

1 函数作为函数形参

    首先,成员函数作为C++中一种特殊的函数,是可以作为函数形参的。先来看一下普通函数是如何作为形参的。

   

void print(int i)
{
    cout << i << " ";
}

void func(void (*pfunc)(int), int i)
{
    pfunc(i);
}

int main()
{
    void (*pfun)(int i);
    pfun = print;
    func(pfun, 6);

    return 0;
}

上述代码有两个函数print()和func(),然后在主函数中定义了一个函数指针pfun,它的形式和print()一样,因此,可以用print()对pfun进行设置,最后,在func中使用该函数指针进行调用,当然,也可以直接使用print()。

那么,对于成员函数有什么不同呢?


2 使用成员函数指针调用成员函数

    下面来看看如何使用成员函数指针调用成员函数,以及和普通的函数有什么不同。

class A {
public:
    void fun(int a)
    {
        cout << a;
    }
};

int main()
{
    A a;
    void (A::*ptrfun)(int);
   

你可能感兴趣的:(c++)