面向对象编程是一种思想,只要运用这种思想,用C语言也能写出面向对象的程序。我们可以把C语言的结构体看成是面向对象语言中的类,结构体里可以有属性和成员函数(函数指针)。这样就能用C语言写出面向对象的序了。
代码如下:
#include<stdio.h>
#include<string.h>
// 定义两个函数类型
typedef void(*SetFunc)(void*, int, int, char*);
typedef void(*OutFunc)(void*);
typedef struct{
// 属性
int age;
int class;
char name[20];
// 成员函数
SetFunc set;
OutFunc out;
}Stu;
void stu_set(void* this, int age, int class, char* name){
printf("set\n");
Stu* s = this;
s -> age = age;
s -> class = class;
strcpy(s -> name, name);
}
void stu_out(void* this){
printf("out\n");
Stu* s = this;
printf("[age=%d], [class=%d], [name=%s]\n",
s -> age, s -> class, s -> name);
}
int main(){
Stu stu = {
.set = stu_set,
.out = stu_out
};
stu.set(&stu, 24, 1, "xiaoming");// 别忘了,Java,C++等也会偷偷的传递this指针呢
stu.out(&stu);
}