c++可调用对象使用示例

void func(void)
{}

struct Foo{
    void operator()(void)
    {}
};

struct Bar{
    using fr_t=void (*)(void);
    static void func(void){}
    operator fr_t(void)
    {
        return func;
    }
};

struct A{
    int a_;
    void mem_func(void){}
};

int main(void)
{
    // 函数指针
    void (*func_ptr)(void)=&func;
    func_ptr();

    // 仿函数
    Foo foo;
    foo();

    // 可以被转换为函数指针的类对象
    Bar bar;
    bar();

    // 类成员函数指针
    void (A::*mem_func_ptr)(void)=&A::mem_func;
    // 类成员指针
    int A::*mem_obj_ptr=&A::a_;

    A aa;
    (aa.*mem_func_ptr)();
    aa.*mem_obj_ptr=123;
    return 0;
}

 

posted @ 2022-02-10 14:10  Wangtn  阅读(51)  评论(0编辑  收藏  举报