函数指针动态绑定

来源:互联网 发布:淘宝好评80字以上 编辑:程序博客网 时间:2024/06/06 20:19

函数指针动态绑定

  • 一个类通过不同的初始化参数来实例成不同的类
#include "stdafx.h"#include <iostream>#include <assert.h>using namespace std;class ClassFun;typedef void (ClassFun::*FunMake)();class ClassFun{public:    enum MainType     {        FUN1,        FUN2    };    explicit ClassFun(MainType type);    ~ClassFun() = default;    void fun();private:    ClassFun() {};                                  // 限制使用    ClassFun& operator = (const ClassFun &) {};     // 限制使用    void initMethods();    FunMake m_pfFunMake = nullptr;    void fun1() { cout << __FUNCTION__ << endl; };    void fun2() { cout << __FUNCTION__ << endl; };    MainType m_type;};ClassFun::ClassFun(MainType type){    m_type = type;    initMethods();}void ClassFun::initMethods(){    switch (m_type)    {    case ClassFun::FUN1:        m_pfFunMake = &ClassFun::fun1;        break;    case ClassFun::FUN2:        m_pfFunMake = &ClassFun::fun2;        break;    default:        break;    }}void ClassFun::fun(){    assert(m_pfFunMake != nullptr);    (this->*m_pfFunMake)();}int main(){    ClassFun classFun1(ClassFun::FUN1);    classFun1.fun();    ClassFun classFun2(ClassFun::FUN2);    classFun2.fun();    system("pause");    return 0;}
0 0
原创粉丝点击