#include <stdio.h> 

#ifndef C_Class 
#define C_Class struct 
#endif 

C_Class A 

C_Class A 
*A_this; 
void (*Foo)(C_Class A *A_this); 
int a; 
int b; 
}; 

C_Class B 
//B继承了A 
C_Class B *B_this; //顺序很重要 
void (*Foo)(C_Class B *Bthis); //虚函数 
int a; 
int b; 
int c; 
}; 

void B_F2(C_Class B *Bthis) 

printf(
"It is B_Fun\n"); 


void A_Foo(C_Class A *Athis) 

printf(
"It is A.a=%d\n",Athis->a);//或者这里 
// exit(1); 
// printf("纯虚 不允许执行\n");//或者这里 


void B_Foo(C_Class B *Bthis) 

printf(
"It is B.c=%d\n",Bthis->c); 


void A_Creat(struct A* p) 

p
->Foo=A_Foo; 
p
->a=1
p
->b=2
p
->A_this=p; 


void B_Creat(struct B* p) 

p
->Foo=B_Foo; 
p
->a=11
p
->b=12
p
->c=13
p
->B_this=p; 


int main(int argc, char* argv[]) 

C_Class A 
*ma,a; 
C_Class B 
*mb,b; 

A_Creat(
&a);//实例化 
B_Creat(&b); 
mb
=&b; 
ma
=&a; 
ma
=(C_Class A*)mb;//引入多态指针 
printf("%d\n",ma->a);//可惜的就是 函数变量没有private 
ma->Foo(ma);//多态 
a.Foo(&a);//不是多态了 
B_F2(&b);//成员函数,因为效率问题不使用函数指针 
getchar(); 
return 0

相关文章:

  • 2021-12-01
  • 2022-12-23
  • 2022-12-23
  • 2021-06-26
  • 2021-10-17
猜你喜欢
  • 2021-07-15
  • 2021-12-16
  • 2022-12-23
  • 2021-09-30
  • 2021-12-31
  • 2022-01-28
相关资源
相似解决方案