⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pmf2.c

📁 this is a gcc file, you can download it and learn its usetility, for further detail please look at t
💻 C
字号:
extern "C" int printf(const char *, ...);class A_table {  int c;public:  A_table() { c = 3;}  virtual void func2(int &item) { printf("func2(%d,) c=%d\n",item,c);}};class B_table : private A_table {public:  typedef void (B_table::* B_ti_fn) (int &item);  B_table() { j = 0x4321;}  virtual void call_fn_fn1(int &item, void *pfn1);  void func1(int &item) { printf("func1(%d)\n",item);}  virtual void func2(int &item) { printf("func2(%d) j=%d\n",item,j);}  int j;};class foo : public A_table {public:  int i;  virtual ~foo();  virtual void func2(int &item) { printf("func2(%d) i=%d\n",item,i);}};foo::~foo() { i = 0;}class bar :public foo,public B_table {public:  int w;  virtual ~bar();  virtual void func2(int &item) { printf("func2(%d) w=%d\n",item,w);}};bar::~bar() { w = 0;}void B_table::call_fn_fn1(int &item, void *pfn1) {  (this->*(*(B_ti_fn*)pfn1))(item);}B_table b;bar jar;int main() {  printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b);  B_table::B_ti_fn z = &B_table::func1;  int j = 1;  jar.call_fn_fn1(j,(void *)&z);  j++;  z = &B_table::func2;  b.call_fn_fn1(j,(void *)&z);  j++;  jar.call_fn_fn1(j,(void *)&z);  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -