En C ++, características como las excepciones afectan a todo el programa: puede deshabilitarlas en todo el programa o debe tratarlas en todo el código. Como dice un famoso artículo sobre C ++ Report :
Contra intuitivamente, la parte difícil de las excepciones de codificación no son los lanzamientos y capturas explícitos. La parte realmente difícil de usar excepciones es escribir todo el código intermedio de tal manera que una excepción arbitraria pueda propagarse desde su sitio de lanzamiento a su controlador, llegando de manera segura y sin dañar otras partes del programa en el camino.
Dado que incluso new
arroja excepciones, cada función debe proporcionar seguridad de excepción básica , a menos que solo llame a funciones que garanticen que no se arroje ninguna excepción, a menos que desactive las excepciones por completo en todo su proyecto .
Por lo tanto, las excepciones son una característica de "todo el programa" o "todo el equipo", ya que deben ser entendidas por todos en un equipo que las usa. Pero no todas las características de C ++ son así, que yo sepa.
Un posible ejemplo es que si no obtengo plantillas pero no las uso, aún podré escribir C ++ correcto, ¿o no? Incluso puedo invocar sort
una variedad de enteros y disfrutar de su sorprendente ventaja de velocidad wrt. C qsort
(porque no se llama a ningún puntero de función), sin arriesgar errores, ¿o no? Parece que las plantillas no son "todo el equipo".
¿Existen otras características de C ++ que afectan el código que no las usa directamente y, por lo tanto, son "todo un equipo"? Estoy especialmente interesado en características que no están presentes en C.
Actualización : estoy especialmente buscando características en las que no hay signos de lenguaje obligatorio que necesita tener en cuenta. La primera respuesta que obtuve mencionó la corrección constante, que también es un equipo completo, por lo tanto, todo el mundo necesita aprender al respecto; sin embargo, AFAICS lo afectará solo si llama a una función que está marcada const
, y el compilador evitará que lo llame a objetos no constantes, por lo que obtendrá algo para google. Con excepciones, ni siquiera lo entiendes; Además, siempre se usan tan pronto como se usa new
, por lo tanto, las excepciones son más "insidiosas". Sin embargo, como no puedo expresar esto de manera objetiva, agradeceré cualquier característica de todo el equipo.
Actualización 2 : en lugar de la función C ++, debería haber escrito algo así como "función específica de C ++", para excluir cosas como el subprocesamiento múltiple que se aplican a una gran cantidad de lenguajes de programación convencionales.
Apéndice: ¿Por qué esta pregunta es objetiva?
C ++ es un lenguaje complejo, por lo que muchos proyectos o guías de codificación intentan seleccionar características "simples" de C ++, y muchas personas intentan incluir o excluir algunas según criterios principalmente subjetivos. Las preguntas sobre eso se cierran con regularidad aquí en SO.
Arriba, en cambio, definí (de la manera más precisa posible) qué es una característica del lenguaje de "todo el equipo", proporcioné un ejemplo (excepciones), junto con una amplia evidencia de apoyo en la literatura sobre C ++, y solicité características de todo el equipo en C ++ más allá de las excepciones.
Si debe usar características de "todo el equipo", o si ese es un concepto relevante, puede ser subjetivo, pero eso solo significa que la importancia de esta pregunta es subjetiva, como siempre.
fuente