¿Está utilizando C en C++ mal?
Aunque una pregunta subjetiva: en mi opinión, tome medidas importantes para evitar el uso de c en los programas de C++.
Muchas personas me han dicho que usar C en C++ es malo porque no es tan seguro y requiere más administración de la memoria. Sigo diciéndoles que mientras sepas lo que estás haciendo, y borres los nuevos y liberes los malloc, entonces C no es un problema.
estás reintroduciendo las deficiencias y peligros que C++ fue diseñado para superar, y no es la forma en que se hacen las cosas en los programas de C++.
comprobo/rechazo/reescribo rutinariamente el código que ingresa a las bases de código que es "c con características de C++", o "C++ con características c". incluso llego a cambiar malloc, libre, etc. para afirmar en espacios de nombres raíz (entre otras cosas).
Actualmente estoy en un foro donde se lleva a cabo una discusión sobre std :: string vs. a char *. Algunas personas dicen que asignar un simple bloque de memoria char * es más eficiente, y siempre que lo desasigna, está bien. Por otro lado, tenemos personas que dicen que std :: string es superior porque no tiene administración de memoria pero es menos eficiente.
hay más opciones para representar una cadena en C++ que std :: cadena.
En mi opinión, es completamente válido crear una nueva clase que represente una cadena y que tenga un propósito particular, o que siga contratos adicionales (cuando sea necesario). parte de los contratos de tales representaciones de cadenas son (por supuesto) que administran sus propios recursos usando new[]/delete[]
cuando se utiliza memoria dinámica.
si la eficiencia es tan importante y std::string
es menos que ideal para una tarea específica, entonces C++ es lo suficientemente potente como para expresar su intención para estos casos específicos mediante la creación de una interfaz especializada en C++. hay muchos casos en que esto es aceptable (imo), pero no siempre vale la pena el tiempo invertido. en cualquier caso, es más fácil de administrar que la integración de c modismos/estilos/peligros en los programas de C++.
Así que la pregunta principal aquí es: ¿está mal la mezcla de C/C++? ¿Debería usar SÓLO 100% C++ cuando su código C++?
es mejor crear soluciones basadas en objetos reutilizables para sus necesidades. los peligros en el ejemplo proporcionado pueden encapsularse por completo (si esta optimización realmente vale la pena el tiempo de inversión), y escribirse para usar modismos C++, sin pérdida de rendimiento y con mejor capacidad de mantenimiento.
C++ es un superconjunto de C. Por lo tanto, cualquier programa C válido es un programa válido de C++, y no hay tal cosa como "mezclar" C en C++. – Jonathan
Imagino que está hablando de las características c que han quedado obsoletas en C++, como malloc –
@Jonathan: 'int main() {int class = 2; } '(C válido, C++ no válido) C++ no es un superconjunto de C; C y C++ comparten un subconjunto común. –