C语言面向对象的模拟(1)

本文尝试使用C语言通过结构体和函数指针模拟面向对象编程的类概念,定义了一个Car类型,包含属性wheels和两个方法:hello和setwheels。通过示例代码展示了如何初始化对象并调用这些方法,实现了类似面向对象的效果。测试结果显示,该方法能够成功地模拟面向对象编程的基本功能。
摘要由CSDN通过智能技术生成

       吃饱了撑的,面向对象程序设计基础就是类,类包括属性和方法,那么结构体中能不能定义函数呢?当然不能!但是可以定义函数指针呀,所以我就想试试看能不能实现一个简单的类。

下面是Car类型的定义:car.h

/*car.h--car类型头文件*/
#ifndef CAR_H_
#define CAR_H_

/*类型定义*/
typedef struct car
{
 int wheels;
 void (*hello)(int);
 void (*setwheels)(int *,int);
}Car;

/*Car类型的方法声明*/
void f_hello(int wheels);

void f_setwheels(int * carwheels,int wheels);

#endif

 

Car类型方法的实现:car.c

/*car.c--Car类型方法的实现*/
#include<stdio.h>

void f_hello(int wheels)
{
 printf("I have %d wheels.\n",wheels); 
}

void f_setwheels(int * carwheels,int wheels)
{
 *carwheels = wheels;
}

 

简单测试:struct_fun.c

/*struct_fun.c--结构体中定义函数指针,面向对象测试*/
#include<stdio.h>
#include"car.h"

int main(void)
{
 /*对象初始化,属性和方法初始化*/
 Car car1;
 car1.wheels = 4;
 car1.hello = &f_hello;
 car1.setwheels = &f_setwheels;

 /*car方法测试*/
 car1.hello(car1.wheels);
 car1.setwheels(&car1.wheels,5);
 car1.hello(car1.wheels);

 return 0;
}

测试结果:

I have 4 wheels.

I have 5 wheels.

是不是有面向对象的范儿呢?C语言真的很强大呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值