C语言实现C++中的类

华科复试面试题:C语言如何实现C++ 中的类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
//C 语言没有类,但可以用结构体充当一个类
//与类不同,结构体只能定义变量,不能够定义函数,可以通过函数指针的方法来实现其功能
//定义“类 ”的成员变量以及方法
typedef struct Person{
char name;
int age;
void (*EatFunction)(struct Person this, int num);
}Person;

//定义函数功能
void EatFunction(struct Person this, int num){
printf("Test\n");
}

//定义“类 ”的构造函数
//与面向对象不同,C语言的“类”的 构造函数不能放在“类”中,只能放在“类”外
//构造函数主要完成 变量的初始化,以及函数指针的赋值
Person *NewPerson(Person *this){
this->name = 'A';
this->age = 18;
this->EatFunction = EatFunction;
}

//主函数调用
int main(){
Person person;
NewPerson(&person);
person.EatFunction(person,0);
return 0;
}

注意:测试的时候要保存为.c 格式,.cpp 格式运行会报错,因为 C++中 this 是关键字 。

参考博客:http://dongxicheng.org/cpp/ooc/