在C语言里实现封装就是实现一个结构体,里面包括的成员变量和函数指针,然后在构造函数中,为结构体的函数指针赋初值
对于这个函数指针往往会把自身传入,因为只是在模仿class
#include <stdio.h>
#include <stdlib.h>
struct student
{
int height;
char* name;
void(*add_height)(struct student *, int);
};
void ADD_HEIGHT(struct student * stu, int add)
{
stu->height += add;
}
struct student * Student(int height,char *name)
{
struct student * stu = malloc(sizeof(struct student));
if(stu) {
stu->height = height;
stu->name = name;
stu->add_height = ADD_HEIGHT;
}
return stu;
}
void freeStudent(struct student * stu )
{
if(stu) {
free(stu);
stu = NULL;
}
}
int main()
{
struct student * stu = Student(180,"LCS");
printf("%d\r\n",stu->height);
stu->add_height(stu,50);
printf("%d\r\n",stu->height);
return 0;
}