类成员函数参数的用法

普通的C函数作为参数传递比较简单,下面给出类成员函数作为参数传递的实例:

class CMyClass
{
public:

    typedef void (CMyClass::*SELFDEF_PFN)(const char * str);

    void foo(SELFDEF_PFN p, const char* str)
    {
        printf("执行预处理动作。\n");
        // ...

        (this->*p)(str);

        printf("执行结束后的动作。\n");
        // ...
    }

    void fa(const char* str)
    {
        printf("%s\n", str);
    }

    void fb(const char* str)
    {
        printf("0x%x\n", str);
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    char szText[] = "example string";
    CMyClass inst;
    inst.foo(&CMyClass::fa, szText);

    inst.foo(&CMyClass::fb, szText);

	return 0;
}

使用类成员函数作为参数使代码更加灵活。

但是不能用一种写法通吃所有类。想传递任意类型的函数的成员函数,请使用模板,使用时进行特化以达到这种效果。

你可能感兴趣的:(C++,成员函数,指针)