数据结构学习(C++)——如何在一个链表中链入不同类型的对象[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 happycock 的 blog

后面讲到的广义表实际上采用的就是这种方法。显而易见的,这样的mobject支持的对象是预先确定的,你将自己维护objecttype列表,每添加一种类型的支持,你需要在objecttype列表中给出它的替代值,然后在相应的switch(objecttype)给出这种类型的case语句。很烦人是吧,下面给出另一种方法,其实还是这个原理,不同的是,把这个烦人的工作交给编译器了。

还记得前边强调的原则吗,为什么我们将不同类型的对象放在一个链表中呢?很显然,我们想达到这样的一个效果:比如说,我们在一个链表中储存了三角形,直线,圆等图形的参数,我们希望对某个节点使用draw()方法,就重绘这个图形;使用get()则得到这个图形的各个参数;使用put()则修改图形的参数。可以看出,这些不同的对象实际上有同样的行为,只是实现的方法不同。

c++的多态性正好可以实现我们的构想。关于这方面,请参阅相关的c++书籍(我看的是《c++编程思想》)。请看如下的例子:

#ifndef shape_h

#define shape_h

 

class shape 

{

本文关键:数据结构 C++ 链表
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top