嵌入式八股C语言---面向对象篇-封装

时间:2025-03-13 14:50:05

  在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;
}