OO Programing in C (2)

原创 2011年03月27日 19:16:00

OO Programing in C is not only POSSIBLE but also PRACTICAL
--------------------------------------------------------------------------------

OO的一个亮点是类的"继承",通过"继承",可以重用许多代码。而且"继承"也是现实生活中非常自然的一种关系。但是很不幸,C没有class,更没有提供"继承"的表达方式。既然能用C的struct来仿真class, 那能不能继续来仿真"继承"呢?答案是:possible。就像<<Inside the C++ Object Modal>>书中所叙述的那样——你可以用C来达到所有C++能做到的事。但这种仿真显然毫无实际应用价值。

"继承"是一种表达方式,代码重用才是目的。

为了重用代码,C++可以用"继承"的方式来巧妙的达到目的,但是也必须付出代价:你必须非常仔细地设计你的类族谱,要有前瞻性,要有可扩展性,要决定分多少个层次....这些都不是容易做到的事。

C别无选择,模块化设计,函数,宏....只能通过巧妙的设计才能达到代码可重用的目的。还是举个例子来说明C是如何做到"殊途同归"的吧。

"链表"是一个非常常用的数据结构,常用于管理无序的数据(对象)集合。链表操作,特别是双向链表操作很容易出错。重用一套通用操作链表的代码可以为我们省不少事。在C++中,我们可以用经典的STL中的list类。为了适应各种数据类型,list类用模板来实现。list类实现的很巧妙,功能很强,但是,不得不说,很少人用。其实不仅list类很少用,STL都很少人用。(希望这是我的一家之言,反正我所熟悉的C++程序员都不怎么用STL :-)当然在C++中你还有另外一个选择:实现一个List基类完成链表操作,要放入链表的类从List类继承而来,就拥有了一套操作list的方法。

Linux内核中用C提供了一套非常巧妙的方法操作链表,位于.../linux/include/linux/list.h,只用一些宏和inline函数来实现双向链表。

OO Programing in C (3)

C的面向对象概念OO Programing in C is not only POSSIBLE but also PRACTICAL.---------------------------------...
  • csh111wise
  • csh111wise
  • 2011年03月28日 20:59
  • 224

OO Programing in C (1)

OO Programing in C is not only POSSIBLE, but also PRACTICAL.----------------------------------------...
  • csh111wise
  • csh111wise
  • 2011年03月27日 19:08
  • 171

OO Programing in C

最近看c版很多人讨论c的面向对象,前天突然在别的论坛看到这个帖子,又因为今天早上醒得早,就copy过来了 http://www.javaeye.com/topic/150575http://www.j...
  • wishfly
  • wishfly
  • 2008年08月28日 10:31
  • 960

poj 3020Antenna Placement(二分最大匹配问题 )

Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8650 ...
  • SDUTyangkun
  • SDUTyangkun
  • 2016年08月05日 14:20
  • 619

C语言编程--Programming in C 习题答案

Answers to Odd-Numbered Exercises ...
  • skyyunmi
  • skyyunmi
  • 2006年12月25日 15:52
  • 3787

Antenna Placement(二分图的最大匹配)

Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9100 ...
  • jinzk123
  • jinzk123
  • 2016年11月16日 15:34
  • 189

the c programing language 1-22 较长输入行折成短些的多行,非缓冲方式实现

/*  * K&R2 1-21  * Author: Donmmi  * Email:teddy_liu@live.com * 程序说明: 代码核心部分:折行后的当前行长度为未输出...
  • u011409801
  • u011409801
  • 2015年01月30日 19:32
  • 346

ALV OO: 最简单的ALV OO实例-Docking容器

最简单的ALV OO实例,Docking容器实现,ALV宽度可以由用户自动调整……
  • rztyzxzy
  • rztyzxzy
  • 2015年07月29日 09:51
  • 2189

C programing

 #include int main(){ printf("Hello world/n"); return 0;}
  • zhouhaohao2008
  • zhouhaohao2008
  • 2009年01月29日 12:50
  • 116
收藏助手
不良信息举报
您举报文章:OO Programing in C (2)
举报原因:
原因补充:

(最多只允许输入30个字)