考试网 >> IT认证 >> 等级 >> 等级动态 >> C语言的多态实现

C语言的多态实现

发布时间:2006-07-25 12:02     点击:
分页:上一页  1 2 [3] 

3.纯虚结构的退化

  下面我们来看看如果struct里面仅仅有一个函数是什么? 这个时候如果我们不使用struct,仅仅使用函数指针又是什么? 我们发现,这样就退化为普通的函数指针的使用了。

  所以说,有的时候我觉得面向对象仅仅是一种形式,而不是一种技术。是一种观点,而不是一种算法。但是,正如炭,石墨和钻石的关系一样,虽然分子式都是C,但是组成方法不一样,表现就完全不一样了!

  有的时候,我们经常被编程中琐碎的事情所烦恼,而偏离了重心,其实程序可进化的特性是很重要的。有可能,第一次是不成功的,但是只要可进化,就可以发展。

4.进阶――类结构树,父类不是纯虚类的类

  前面仅仅讲的是父类是纯虚结构的情况 (面向对象建议的是所有类的基类都是从纯虚类开始的), 那么当类层次比较多的情况下,出现父类不是纯虚结构怎么办呢。嘿嘿,其实在C中的实现比C++要简单多了。因为C中各个函数是分散的。

在这里使用宏定义是一个很好的办法:比如两个类Act1,ActByOther1“继承”Act1:

MyVirtualInterface* ActByOther1_CreatInterface()

{

index=FindValid() //对象池或者使用Malloc

if(index==-1) return NULL;

St[index].Foo1= ActByOther1_Foo1; // Act1_Foo1要在下面具体实现

St[index].Foo2= ActByOther1_Foo2;

St[index].Foo3= ActByOther1_Foo3;

Return &st [index];

}

#define ActByOther1_Foo1 Act1_Foo1 //这就是继承 嘿嘿

ActByOther1_Foo2(){} // 可以修改其实现

ActByOther1_DoByOther() {} //当然就可以添加新的实现咯
分页:上一页  1 2 [3] 
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有