Nisy 发表于 2009-9-20 02:59:43

复习之模拟虚表

//*******************************
//MyCPPVirtual.h

class MyVirtual;
typedef void (MyVirtual::*PFUN)();// 注意点二:声明类的函数指针
extern PFUN pf;

class MyVirtual
{
public:
        int nNum;
        PFUN * pfun;        // 注意点三:这里是指针的指针
public:
        MyVirtual(int num);
        virtual ~MyVirtual();
public:
        void ShowNum();
};

//*******************************
//MyCPPVirtual.cpp

#include "stdafx.h"
#include "MyVirtual.h"

MyVirtual::MyVirtual(int num)
{
        nNum = num;
        pfun = pf;
        pfun = ShowNum;
}

MyVirtual::~MyVirtual()
{
}

void MyVirtual::ShowNum()
{
        cout<<nNum<<endl;
}

//*******************************
//MAIN.CPP

#include "stdafx.h"
#include "MyVirtual.h"

PFUN pf;// 注意点一:空间要放到数据区

int main(int argc, char* argv[])
{
        MyVirtual myv(15);
        (myv.*(myv.pfun))();// 注意点四:(obj.*(obj.pfun))()
        return 0;
}
页: [1]
查看完整版本: 复习之模拟虚表