c++对c扩充了类 ,而C语言本身并没有。我想知道像c++、Java这些面向对象语言,它们是如何实现一个类的?

2024-10-31 22:36:45
推荐回答(1个)
回答1:

可以通过定义一个 虚函数表实现:
#include 
#include  
struct Student; 
typedef struct StudentVtbl{   
 char* (*GetName)(struct Student* This);    
 void(*SetName)(struct Student* This, char*);}StudentVtbl; 
 typedef struct Student{   
  StudentVtbl* lpVtbl;   
  char name[20];
  }Student; 
  char* stu_GetName(Student* This){    
      return This->name;
  } 
  void stu_SetName(Student* This, char* newName){   
      strcpy(This->name, newName);
  }
  StudentVtbl stuVtbl = { stu_GetName, stu_SetName }; 
      int main(){   
           Student stu = { &stuVtbl };    
           stu.lpVtbl->SetName(&stu, "Jack");   
           printf("student name = %s", stu.lpVtbl->GetName(&stu));   
           return 0;
   }