这不是直接回答你的例子,但一个地址给你的评论,这显示了一个错误的观点恕我直言
我只是想知道有关具体问题,如果有最感兴趣 更高效办法避免的虚方法
也有一些是了解这里的性能开销 。 一切有一个折衷。设计模式和OO具有我们所喜爱的所有已知优点,但也具有缺点,例如太多类,内存开销,由于许多方法调用等导致的性能开销。
在另一方面旧的“程序”的方式有一些优势也成为目标;编码是“简单的”(不需要考虑如何设计系统,只需将所有内容都放在主体中),并且在很多方面开销较少(因为需要更少的类和更紧凑的对象,所以内存开销更少) - 不需要虚拟表等等 - 而且更少的方法调用,所以也许更好的性能,动态绑定没有性能开销 - 不管现在的开销如何 - )。
但它不是什么特定问题实例的权衡取舍,它是什么经验表明什么是构建软件的正确方法。 重用的代码,模块化和在独立的测试(质量保证),可读,维护协助,柔性的,以延伸是已被很好地理解的属性应该是这样的主驱动器在软件开发中。
所以在某些情况下,C/C++中的程序员可以像你说的那样做“老路”,但是对于这个特殊的程序来说性能上的好处值得这样一个事实:没有人之后能够维持或维持?
再举一个类似的例子:你可以问以同样的方式?
为什么在web开发中使用多层体系结构?只要把一切都变成一台服务器,这将是快了很多,因为不会有任何的延迟在查询后端和用户界面的数据或远程数据库的查询等
网络延迟所有层 当然,你有一个观点。但是,然后问你的自我,这可以作为负荷增加?答案是不。因此,扩展性对您而言很重要,或者您希望保持“将所有内容放在一台服务器上”的想法?如果你的收入来自电子商务网站,但事实上,你不能为更多的客户不会让你的客户感到高兴,因为你担任第100真快......反正这是我的意见
所以你的问题是什么像以前的面向对象语言一样编程?我想象如何构造它们的程序,最终演变成面向对象的概念?例如。一个类通常与捆绑方法的结构相同。 – Cratylus
@Cratylus - 不,我的问题是不打算是广泛的,我不知道类窗帘后面是什么,我只是想知道关于特定问题,最感兴趣,如果有避免的性能开销更有效的方法虚拟方法。 – dtech
也许这会有所帮助: [http://stackoverflow.com/questions/524033/how-can-i-simulate-oo-style-polymorphism-in-c][1] [1]:HTTP: //stackoverflow.com/questions/524033/how-can-i-simulate-oo-style-polymorphism-in-c – John