C语言使用结构体实现面向对象编程

  C语言虽说不像C++提供了封装、继承、多态的机制可以很容易实现面向对象编程。但是C语言的结构体可以很好的实现封装和继承,按照面向对象编程的思想实现面向对象编程。下面简要介绍一小使用C语言实现的过程:

1.“基类”结构体的定义

//定义基类,包含基本属性,给其他结构体继承
typedef struct
{
    char name[10];      //定义name
    int age;            //定义age
}super;

2.“派生类”结构体的定义

//定义派生类,除了继承基类的基本信息以外,还增加了score属性信息,以及操作函数
struct person {
	super my_base_info;    //继承基类
	float score;		//新增属性
    	void (*show_info)(char*, int, float);   //show_info操作函数
    	float (*score_total)(float);            //score_total操作函数
};

3.结构体操作函数实例化

//结构体中show_info函数的实现
void my_show_info(char* my_name, int my_age, float my_float)
{
  	printf("my_name=%s\r\n",my_name);
  	printf("my_age=%d\r\n",my_age);
        printf("my_float=%f\r\n",my_float);
}
//结构体中score_total函数的实现
float my_score_total(float my_float)
{
  	float my_total;
  	my_total=my_float+10.1;
  	printf("my_total=%f\r\n",my_total);
  	return my_total;
}   

4.main函数实现面向对象编程

int mian()
{
 /*定义结构体并初始化*/
 struct person hututu = {
 	.my_base_info={
	       .name = "hututu",
               .age = 10
	},
        .score=88.88,
        .show_info=my_show_info,   //重要,将实例化的函数指针挂在这里
        .score_total=my_score_total//重要,将实例化的函数指针挂在这里
   };
   float result=0;
    /*调用结构体中的函数*/
   hututu.show_info(hututu.my_base_info.name,hututu.my_base_info.age,hututu.score);
   result=hututu.score_total(hututu.score);
 return 0;
}

5.总结

  本文借助结构体实现了类之间的封装和继承,由于结构体良好的封装特性,可以借此实现C语言的面向对象编程,对于多态的实现较为复杂,因此对于需要大量使用到多态特性的应用,还是建议使用C++,毕竟在语言层面支持多态,省去了我们的开发步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tutu-hu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值