Nisy 发表于 2009-7-16 22:22:16

在C语言中模拟类的思想

.

简单模拟一下

其实类的思想就是C语言中结构体的一个扩充 在结构体数据中加入了函数指针来实现对结构体数据的处理 大概就是这个意思

用C标准来模拟一下类的思想 VC6编译通过

#include <stdio.h>
#include <stdlib.h>

typedef struct node
{
      int year;
      int month;
      int day;
      int (*f1)(struct node *);
}Day;

int Show(Day * date)
{
      printf("%d-%2d-%2d \r\n",date->year,date->month,date->day);
      return 1;
}

Day * CreateDay(Day * date,int year,int month,int day)
{      
      Day * d;
      d=(Day *)malloc(sizeof(Day));
      if(!d)return 0;
      d->year=year;
      d->month=month;
      d->day=day;
      d->f1=Show;
      return d;
}

int main()
{
      Day * date=NULL;
      date=CreateDay(date,2005,12,31);
      date->f1(date);
      free(date);
      return 0;
}

HDd1145 发表于 2009-7-17 01:10:17

sdprtf 发表于 2009-7-17 07:57:16

的确可以,就是有点麻烦,函数多了的话有点乱,毕竟封装性做的不是太好

suiyunonghen 发表于 2009-7-18 09:39:06

VC中类和结构体本身就是差不多的了(结构体支持构造函数,函数,属性等)
只是结构体中全部都是公共域,没有私有域

最忌注册 发表于 2009-7-18 16:09:46

现在回到家了 现在可以跟着Nisy继续大哥学习
先重新看看前13课视频

xdnice 发表于 2009-7-18 17:54:20

看见指针头就有点晕

boy 发表于 2009-7-29 00:51:50

原帖由 suiyunonghen 于 2009-7-18 09:39 发表 https://www.chinapyg.com/images/common/back.gif
VC中类和结构体本身就是差不多的了(结构体支持构造函数,函数,属性等)
只是结构体中全部都是公共域,没有私有域
.cpp结构体和类功能是一样的好吧,只不过类默认是私有,结构体是公有
谁告诉你结构体不能有private?

ltmt000li 发表于 2009-8-5 00:33:57

真的 不怎么懂 啊   呵呵
看来我要补课啊

飘零 发表于 2009-12-10 19:57:09

这里好像全是c

diype 发表于 2009-12-11 07:29:53

原帖由 boy 于 2009-7-29 00:51 发表 https://www.chinapyg.com/images/common/back.gif

.cpp结构体和类功能是一样的好吧,只不过类默认是私有,结构体是公有
谁告诉你结构体不能有private?
呵呵,谁说结构体中不能有private 呢,只是没有什么实际应用意义而已,所以在实例中一般没有出现。但是在讲类与结构的异同点时都讲过的咯。
页: [1] 2
查看完整版本: 在C语言中模拟类的思想