类中的虚函数,通过指针获得vtable内容,然后通过函数指针指向虚函数并调用

原创 2007年10月05日 18:43:00

#include "stdafx.h"

class A
{
 virtual void FunA(){ printf( "liangchao/r/n" ); }
 virtual void FunB(){ printf( "liangchao1/r/n" ); }
};

typedef void (*pFunA)();

int _tmain(int argc, _TCHAR* argv[])
{
 A a;
 pFunA pfunA, pfunB;

 int p = (int)(&a);
 int i = *( (int*)p );//i是指向vtable的指针
 i = *((int*)i);//i是函数FunA的地址

 int j = *( (int*)p );
 j = j +4;
 j = *((int*)j);//i是函数FunA的地址

 //void *q = (void*)(*p);
 pfunA = (void (*)())( i );
 pfunB = (void (*)())( j );
 pfunA();
 pfunB();
 return 0;
}

 

相关文章推荐

C++指向类成员函数的以及虚函数的函数指针

先熟悉一下最简单的函数指针吧。 1. 函数指针可以在声明的时候赋值#include using namespace std; int MyFunc(int i){ return i+1; ...

使用指针和引用处理虚函数实例

  • 2015年04月14日 19:40
  • 1.62MB
  • 下载

虚函数、指针等.doc

  • 2013年05月16日 16:04
  • 221KB
  • 下载

虚函数与函数指针

虚函数表算是面试官最爱问的C++问题了,如果你的简历提到熟悉C++而关于虚函数机制没有回答好,那么你就会被怀疑。。。:) 我觉得虽然理解虚函数表不是编程必须的,但是了解一下还是有帮助的,侯捷翻译...

指针高级应用_虚函数

  • 2008年06月22日 11:51
  • 8KB
  • 下载

C++知识点随笔(七):成员函数指针、模拟虚函数列表

成员函数指针普通的全局函数指针定义:typedef void (*PFUN)();普通的函数指针可以指向返回值和参数类型都相同的全局函数,可是成员函数该怎么办呢?如果成员函数是static的,那么可以...

c++虚函数的前奏--函数指针与回调

声明函数指针并实现回调 程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数...
  • maopig
  • maopig
  • 2011年09月06日 18:51
  • 1026

虚函数的指针访问

  • 2015年06月06日 07:45
  • 620B
  • 下载

java和c++比较--虚函数和指针

  • 2008年01月29日 00:59
  • 2KB
  • 下载

怎样获得虚函数的指针

先请看下面的简单的例子程序: #include using namespace std;   class A { private:          int a;     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:类中的虚函数,通过指针获得vtable内容,然后通过函数指针指向虚函数并调用
举报原因:
原因补充:

(最多只允许输入30个字)