在C ++中,异常之类的功能会影响整个程序:您可以在整个程序中禁用它们,或者需要在整个代码中对其进行处理。正如有关C ++ Report的著名 文章所述:
与直觉相反,编码异常的困难部分不是显式的抛出和捕获。使用异常的真正困难部分是编写所有中间代码,以使任意异常可以从其抛出站点传播到其处理程序,安全地到达并且不会破坏程序的其他部分。
由于甚至new
抛出异常,因此每个函数都需要提供基本的异常安全性 -除非它仅调用保证不抛出异常的函数- 除非您在整个项目中完全禁用异常。
因此,异常是“整个程序”或“整个团队”的功能,因为使用它们的团队中的每个人都必须理解它们。据我所知,并不是所有的C ++功能都像那样。
一个可能的例子是,如果我没有模板但不使用它们,我仍然可以编写正确的C ++,或者我不会吗?我什至可以调用sort
整数数组,并享受其惊人的速度优势。C qsort
(因为未调用任何函数指针),而又不会冒bug的风险-是否?看来模板不是“全团队”。
是否还有其他C ++功能会影响代码而不直接使用它们,因此是“整个团队”?我对C中没有的功能特别感兴趣。
更新:我特别要寻找的功能是没有需要您注意的语言标记。我得到的第一个答案是const-正确性,它也是一个完整的团队,因此每个人都需要学习它。但是,AFAICS仅在调用标记为的函数时才会对您产生影响const
,并且编译器将阻止您在非const对象上调用它,因此您可以向Google寻求帮助。除非有例外,否则您什至没有得到。而且,它们总是在您使用后立即使用new
,因此异常更加“阴险”。但是,由于我不能客观地表述这一点,因此我将不胜感激任何全团队功能。
更新2:我应该写一些类似“ C ++特定功能”的文章,而不是C ++功能,以排除适用于大量主流编程语言的多线程之类的东西。
附录:为什么这个问题是客观的(如果您想知道的话)
C ++是一种复杂的语言,因此许多项目或编码指南都试图选择“简单的” C ++功能,并且许多人尝试根据大多数主观标准来包括或排除某些功能。有关此问题,请按此定期关闭。
相反,在上面,我(尽可能精确地)定义了“整体”语言功能是什么,提供了一个示例(例外),以及有关C ++文献的大量支持证据,并要求使用C ++的整体团队功能毫无例外。
您是否应该使用“整个团队”功能,或者是否使用相关概念可能是主观的,但这仅意味着该问题的重要性像往常一样是主观的。