【发布时间】:2012-08-23 21:22:33
【问题描述】:
假设我们有一个包含不同元素的绘图程序,例如圆形、矩形、三角形等。不同类型的对象都需要类似的功能,例如 draw() 来显示自己。
我想知道程序员将如何解决如今通常由多态性解决的问题,即通过一组不相同的元素并跨不同对象调用通用功能。
想到的一种方法是拥有一个结构,其中包含指向适当函数(或函数指针数组中的索引)的函数指针以及指向实际实例的 void 指针,并将转换为的指针传递给函数中的正确类型。但这正是我——一个对这个问题一无所知的人会这样做的方式。
我确实意识到这可能是一个愚蠢的问题,但由于我在“过去”的日子里没有出现过,我真的很想知道这个问题是如何解决的。在过程编程中使用了什么样的方法,它是否具有性能优势,因为我们都知道多态性即使在像 C++ 这样的快速语言中也会因为虚方法查找而产生开销。
【问题讨论】:
-
所以你的问题是在 OO 语言之前编程是什么样的?我想围绕如何构建最终演变成 OO 的程序的概念进行工作?例如。类通常与捆绑了方法的结构相同。
-
@Cratylus - 不,我的问题并不打算那么广泛,我确实意识到幕后有哪些课程,我只是想知道这个特定问题,如果有更有效的问题,我最感兴趣避免虚拟方法的性能开销的方法。
-
这似乎是一个优化问题。因为理论上很慢而丢弃 OO 太仓促了。在我看来,您应该只在探查器告诉您的时间和地点“优化 OO”。
-
您在结构中描述的方式将是我的第一个猜测。你会在 Linux 内核中看到很多这样的内容。
标签: oop polymorphism procedural-programming