C语言实现面向对象的多态之----条件判断
来源:互联网 发布:盛势网络剧花絮视频 编辑:程序博客网 时间:2024/05/17 03:10
什么是多态
什么是多态,我理解的就是相同的函数名,在不同的上下文中有不同的实现,程序能够根据自己所处的上下文选择合适的实现。其实这里的上下文最多的还是指子类和父类环境。举个简单的例子,就好比你和你的父亲,同样是接待你小姨妈这么一个行为,接待方式肯定是不一样的。
对于C来说,多态其实就是一种条件判断,if 或者switch
还是用书中列举的传感器为例,访问传感器采集数据的接口的不同,可以将传感器分为两大类:一种是端口映射的传感器,一种是内存映射的传感器
通过在类中添加一个属性whatKindOfInterface,在采集数据函数acquireValue中用switch列举出不同类型的传感器所对应的采集方式
int acquireValue(Sensor *me) {
int *r, *w; /* read and write addresses */
int j;
switch(me->whatKindOfInterface) {
case MEMORYMAPPED:
w = (int*)WRITEADDR; /* address to write to sensor */
*w = WRITEMASK; /* sensor command to force a read */
for (j=0;j<100;j++) { /* wait loop */ };
r = (int *)READADDR; /* address of returned value */
me->value = *r;
break;
case PORTMAPPED:
me->value = inp(SENSORPORT);
/* inp() is a compiler-specific port function */
break;
}; /* end switch */
return me->value;
};
Code Listing 4: Polymorphism the hard way
这种方式缺点:这种方法要求我们在类对象初始化之前就要预知所有的可能的上下文环境,或者我们也应该能够很方便的通过修改函数来添加一个新的上下文环境。但是,实际的多态并不是这样的,它不需要去预知所有的可能,当一个新的上下文被发现的时候,多态函数就能够自行的被创建添加,不需要去修改其他函数。
这个是用C的传统方式实现的多态(条件判断),在下一章说完继承之后我们会用一种全新的方式来实现多态。
- C语言实现面向对象的多态之----条件判断
- C语言实现C++面向对象语言多态特性
- C语言中的面向对象-C语言的多态实现
- C语言中的面向对象(2)-C语言的多态实现(转载)
- C语言面向对象的实现
- C语言面向对象的实现---多态性
- C语言实现面向对象的思想
- C语言实现面向对象的思想(实现封装、继承和多态)
- c语言实现面向对象
- C语言实现面向对象
- C语言实现面向对象
- C语言实现面向对象
- C语言实现面向对象
- C语言实现面向对象
- C语言实现面向对象
- C语言实现面向对象
- C语言面向对象的思想(实现继承和多态)
- 用c语言实现面向对象的封装继承和多态
- JDBC操作Oracle CLOB对象
- 直方圖均衡化圖像增強算法
- 齊次坐標的理解
- C语言中auto,register,static,const,volatile
- 矩陣分析-正交-0 引言
- C语言实现面向对象的多态之----条件判断
- 矩陣分析-線性系統-1 定義、方程組解的表現形式和性質
- Super-vlan技术详解
- 用截取的部分图像创建新图像--关于cvGetSubRect,cvGetImage的用法
- 矩陣分析-線性系統-2 高斯消元法、高斯-若爾當消元法
- border:0 none,border:none;,border:0;三者之间的区别
- 矩陣分析-線性系統-3 LU分解
- 矩陣分析-線性系統-4 病態系統(ill-conditioned Systems)與條件數(condtion number)
- iphone应用开发