C语言实现C++ 中的类

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

#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/

猜你喜欢

转载自blog.csdn.net/forever__1234/article/details/61429870