飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1698|回复: 0

[C/C++] 复习之模拟虚表

[复制链接]

该用户从未签到

发表于 2009-9-20 02:59:43 | 显示全部楼层 |阅读模式
//*******************************
//MyCPPVirtual.h

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

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[0] = ShowNum;
}

MyVirtual::~MyVirtual()
{
}

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

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

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

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

int main(int argc, char* argv[])
{
        MyVirtual myv(15);
        (myv.*(myv.pfun[0]))();  // 注意点四:(obj.*(obj.pfun[x]))()
        return 0;
}
PYG19周年生日快乐!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表