首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对于C/C++,什么时候不使用面向对象编程是有益的?

对于C/C++,什么时候不使用面向对象编程是有益的?
EN

Stack Overflow用户
提问于 2009-11-10 13:04:29
回答 16查看 10.8K关注 0票数 19

当我用C/C++编写代码时,我发现自己总是试图将所有东西都融入到OOP方法中。但我意识到,我并不总是要把所有的东西都强加给这个模子。使用OOP方法论与不使用OOP方法论有什么优缺点?我更感兴趣的是不使用OOP的优缺点(例如,不使用OOP有没有优化的好处?)。谢谢,让我知道。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2009-11-10 13:12:14

当然,解释OOP是一件好事的理由是非常容易的。这些包括:设计模式、抽象、封装、模块化、多态性和继承。

不使用OOP时的

  • Putting方形钉在圆孔中:当它们不需要时,不要将所有东西都包装在类中。有时没有必要,额外的开销只会使您的代码变得更慢和更复杂。
  • Object状态可能会变得非常复杂:有句名言出自发明了
  • Object的Joe Armstrong

,面向对象语言的问题是,它们有所有的隐含环境,它们随身携带。你想要一个香蕉,但你得到的是一只大猩猩拿着香蕉和整个丛林。

  • Your代码已经不是面向对象的了:,如果你的旧代码不是面向对象的,那么就不值得移植你的代码。1995年的

引用了Richard Stallman的一句话

将OOP添加到Emacs并不是一个明显的改进;我在Lisp Machine窗口系统上工作时使用了OOP,我不同意通常的观点,即OOP是一种更好的编程方式。

  • Portability使用C:时,您可能需要将一组函数导出到C中。虽然您可以通过创建一个结构和一组函数来模拟C中的OOP,但这并不总是很自然。

你可以在这篇题为Bad Engineering Properties of Object-Oriented Languages的文章中找到更多原因。

Wikipedia's Object Oriented Programming page还讨论了一些利弊。

票数 29
EN

Stack Overflow用户

发布于 2009-11-10 13:11:38

非oop功能的一个好处是,它通常可以更容易地将您的功能导出到不同的语言。例如,在C#中使用只包含函数的简单DLL要容易得多,您可以使用P/Invoke来简单地调用C++函数。因此,从这个意义上讲,它对于编写非常耗时的算法非常有用,这些算法可以很好地适合单个/少数函数调用。

票数 4
EN

Stack Overflow用户

发布于 2009-11-10 17:43:02

OOP在GUI代码、计算机游戏和模拟中被大量使用。窗口应该是多态的--你可以点击它们,调整它们的大小,等等。电脑游戏对象应该是多态的-它们可能有一个位置,一条可遵循的路径,它们可能是健康的,它们可能有一些人工智能行为。模拟对象也具有类似的行为,但会分解为多个类。

然而,对于大多数事情来说,OOP有点浪费时间。状态通常只会带来麻烦,除非您已将其安全地放入其所属的数据库中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1705724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档