也许.也许不吧.
您可以编写有效的面向对象代码.您可以编写效率低下的结构化代码.
这取决于应用程序,代码编写的程度以及代码的优化程度.通常,您应该编写代码,使其具有良好,干净,模块化的体系结构并且设计良好,然后如果您遇到性能问题,则优化导致性能问题的热点.
使用面向对象的编程,使用它是有意义的,并使用结构化编程,使用它是有意义的.您不必在一个和另一个之间进行选择:您可以同时使用两者.
我记得早在 1990 年代初,当 C++ 还很年轻时,就有过相关研究。如果我没记错的话,那些采用(编写良好的)C++ 程序并用 C 重新编码的人的速度提高了大约 15%。那些采用 C 程序并用 C++ 重新编码,并将 C 的命令式风格修改为 C++ 的 OO 风格(但算法相同)的人获得了相同或更好的性能。这种明显的矛盾可以通过以下观察来解释:C 程序在转换为面向对象的风格后,组织变得更好。您在 C 中所做的事情,因为代码太多且难以做得更好,而在 C++ 中可以更轻松地正确完成。
回想起来,我对这个结论有些好奇。第二次编写程序总会产生更好的程序,因此不一定非要采用 OO 风格才能产生差异。当今的计算机体系结构的设计具有对 OO 程序执行的常见操作的硬件支持,并且编译器在使用指令方面已经变得更好,因此我认为无论 1992 年虚拟函数调用的开销如何,今天都可能要小得多。