>多态性,
> STL,
>异常安全/处理,
>具有基于策略的类设计的模板,
智能指针
>新建/删除,放置新/删除
用于游戏工作室?我有兴趣知道图书馆的名称和他们使用的C功能.例如,Orge3D使用所有现代C功能,包括异常和智能指针.换句话说,如果我正在寻找一个使用现代C的游戏库的例子,我会去Orge3D.但是我不知道这些功能是否阻止游戏工作室使用Orge3D.
此外,我不知道是否还有其他例子.例如,我稍后使用Box2D一段时间,但它仅使用了placement new,而将class关键字用作C功能.这些类中的所有成员都是公开的,即使是封装也是坏的.
理想情况下,如果C功能是所有情况下最匹配的,这些将最常用.但似乎没有.阻碍是什么?显而易见的是要读一堆书,但这只是一半理由.这个问题是“C++ for Game Programming – Love or Distrust?”的后续行动(从我的回应中我得到一个印象,许多C功能还没有在游戏中使用,这不一定是应该的).
解决方法
>多态性,
由一些工作室使用,而不是其他工作室.许多团队仍然倾向于避免这种情况.虚拟功能呼叫的确是成本昂贵的,即使在现代游戏机上,成本也是显着的.在那些使用多态性的人中,我的愤世嫉俗的假设是只有一小部分使用它很好.
> STL,
由于许多与多态性相同的原因,分裂在中间. STL易于使用不正确,所以许多工作室选择避免在这些理由.在那些使用它的人中,很多人将其与自定义分配器配对. EA创建了EASTL,它解决了游戏开发中许多STL问题的原因.
>异常安全/处理,
很少的工作室使用异常处理.现代游戏机的第一个建议之一是关闭RTTI和例外. PC游戏可能会使用异常更大的效果,但是在控制台工作室中,异常非常频繁地被避免.它们增加了代码大小,这可以是一个很高的价格,并且在一些相关的平台上不被支持.
>具有基于策略的类设计的模板,
基于政策的设计…我没有遇到过任何一个.模板经常用于内省/反射和代码重用等内容.当我阅读Alexandrescu的书时,基于政策的设计似乎对我来说是一个有缺陷的承诺.我怀疑它在游戏行业中的用处非常大,但是从工作室到工作室也会有很大差异.
智能指针
智能指针被许多也使用多态和STL的工作室所接受.控制台游戏中的内存管理是非常重要的,所以很多人不喜欢引用计数智能指针,因为他们没有明确的释放它们,但这些肯定不是唯一的智能指针.智能指针的想法总体上仍然在吸引.我认为这在2-3年会更为常见.
经常使用这些.它们经常被覆盖以使用下面的自定义分配器,从而可以跟踪内存并轻松找到泄漏.
我想我同意你的结论. C不会在游戏工作室中使用尽可能多的程度.这是有好的和坏的原因.好的是因为对性能的影响或记忆的关注,坏的是因为人们陷入困境.在很多方面,以一贯的方式做事情是有道理的,如果这意味着C有限C,那么C意味着C有限.但是有一些反C偏见浮在一边,有些是有道理的,有些还没有.