| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1634 人关注过本帖
标题:[讨论]OO in C
只看楼主 加入收藏
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

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-02-24 11:18
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
嗯,此贴值一个8位的QQ

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-02-24 20:10
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
收藏
得分:0 
oo 是C语言编出来的,C++是用C语言编写,用C语言实现当然是可行的。
2005-02-26 21:08
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
楼上的错了,这不是真正的OO,我看你的问题还是在学的是C++,C#,却没有一点OO的思想.

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2005-02-26 21:40
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
OOP是一种思想,你不能刻意去描述的。往往你越是刻意,就显得越牵强。

万法自然

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

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



淘宝杜琨
2005-02-26 23:59
月影游侠
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-3-2
收藏
得分:0 
顶起来,不要沉了
2005-03-06 15:56
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
OOP是一种思想,你不能刻意去描述的。往往你越是刻意,就显得越牵强。

万法自然

同意,顶一下!!!

差点把你忘了...
2005-03-07 09:40
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
收藏
得分:0 
以下是引用神vLinux飘飘在2005-2-26 23:59:26的发言: OOP是一种思想,你不能刻意去描述的。往往你越是刻意,就显得越牵强。 万法自然 一种思想是任何一种语言都可以描述的。 这就像是‘相对论’,不管英语也好、法语也好,他们都可以最其进行精确的描述。
支持. 现在的开发语言, 不外乎这两种方式, 从某些意义上说, 只是设计思路的不同, 采用那种语言来实现, 不是关键问题.

2005-05-19 09:29
快速回复:[讨论]OO in C
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015249 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved