| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 832 人关注过本帖
标题:[讨论]OO in C
收藏  订阅  推荐  打印 
神vLinux飘飘
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:87
帖子:6085
积分:61226
注册:2004-7-17

C语言的结构体struct到底和C++的类Class有什么不同? 结构体是一群相关数据的集合,而类不仅仅是相关数据的集合,更是相关函数的集合。 怎么理解?就是说结构体只能调用结构体包含的变量,而类能调用类包含的方法(函数)。 如果说在结构体中实现了调用相关函数的话,那么我们就说OOP IN C了。

#ifndef class #define class struct #endif

/*-----student类-BEGIN----*/ class student{ class student *this; char name[30]; int math; int chinese; int english; void(*sum)(class student*); void(*ave)(class student*); void(*list)(class student*); }; /*-----方法池-BEGIN----*/ void sum_method(class student*p){ printf("SUM=%d\n",p->math+p->chinese+p->english); } void ave_method(class student*p){ printf("AVE=%d\n",(p->math+p->chinese+p->english)/3); } void list_method(class student*p){ printf("%s\n%d\n%d\n%d\n",p->name,p->math,p->chinese,p->english); } /*-----方法池-END-----*/ /*-----类操作-BEGIN----*/ void creatStudent(class student*p,char *n,int m,int c,int e){ p->this=p; strcpy(p->name,n); p->math=m; p->chinese=c; p->english=e; p->sum=sum_method; p->ave=ave_method; p->list=list_method; } /*-----类操作-END----*/ /*-----student类-END----*/

void main(){ /*-----student类的实例化-BEGIN----*/ class student knocker; class student vlinux; class student live41; creatStudent(&knocker,"Knocker",50,60,70); creatStudent(&vlinux,"vlinux",95,98,90); creatStudent(&live41,"live41",80,90,100); /*-----student类的实例化-END----*/ /*-----这里,三个实例分别调用了三个结构体所包含的方方法(函数)-----*/ (*knocker.list)(&knocker); (*knocker.sum)(&knocker);

(*vlinux.list)(&vlinux); (*vlinux.ave)(&vlinux);

(*live41.list)(&live41); getch(); }


泛出微微的蓝色的光,像有生命般涌动着,闪烁着,平滑而优美,达到了机械和美学结合的最高境界,向一件艺术品一样,默默的展示着,寂寞而孤傲,只有宇宙才能证实它的存在,只有永恒可以于它并存
2005-2-24 11:18
Knocker
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:36
帖子:9963
积分:324662
注册:2004-6-1

嗯,此贴值一个8位的QQ

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-2-24 20:10
live41
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:67
帖子:12422
积分:126000
注册:2004-7-22

oo 是C语言编出来的,C++是用C语言编写,用C语言实现当然是可行的。
2005-2-26 21:08
Knocker
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:36
帖子:9963
积分:324662
注册:2004-6-1

楼上的错了,这不是真正的OO,我看你的问题还是在学的是C++,C#,却没有一点OO的思想.

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-2-26 21:40
神vLinux飘飘
Rank: 12Rank: 12Rank: 12
等级:贵宾
威望:87
帖子:6085
积分:61226
注册:2004-7-17

OOP是一种思想,你不能刻意去描述的。往往你越是刻意,就显得越牵强。

万法自然

一种思想是任何一种语言都可以描述的。
这就像是‘相对论’,不管英语也好、法语也好,他们都可以最其进行精确的描述。

[此贴子已经被作者于2005-2-27 0:01:00编辑过]



泛出微微的蓝色的光,像有生命般涌动着,闪烁着,平滑而优美,达到了机械和美学结合的最高境界,向一件艺术品一样,默默的展示着,寂寞而孤傲,只有宇宙才能证实它的存在,只有永恒可以于它并存
2005-2-26 23:59
月影游侠
Rank: 1
等级:新手上路
帖子:20
积分:302
注册:2005-3-2

顶起来,不要沉了
2005-3-6 15:56
天使预备役
Rank: 4
等级:高级会员
威望:3
帖子:669
积分:6804
注册:2004-4-6

OOP是一种思想,你不能刻意去描述的。往往你越是刻意,就显得越牵强。

万法自然

同意,顶一下!!!

我 :“日本人也算人?” 上帝:“算,算,算吧。”。 我 :“这不是你的真心话。” 我 :“失手造批禽兽出来也就算了,但也不能把它们紧挨着咱中国人放啊!” 上帝:“你们中国人自己死好面子讲什么仁义,早点踏平过去,不早没事了。” 我 :。。。
2005-3-7 09:40
lwei
Rank: 2
等级:注册会员
帖子:82
积分:930
注册:2005-5-4

以下是引用神vLinux飘飘在2005-2-26 23:59:26的发言: OOP是一种思想,你不能刻意去描述的。往往你越是刻意,就显得越牵强。 万法自然 一种思想是任何一种语言都可以描述的。 这就像是‘相对论’,不管英语也好、法语也好,他们都可以最其进行精确的描述。
支持. 现在的开发语言, 不外乎这两种方式, 从某些意义上说, 只是设计思路的不同, 采用那种语言来实现, 不是关键问题.

2005-5-19 09:29
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.055004 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved