¿Pro Linus Torvalds? ¡Dios me libre! No creo que nadie dude que es un excelente programador de C, pero el generalizar sobre C++ de la manera en que lo ha hecho en el pasado le hace un flaco favor a la verdad. Desde luego, no es un lenguaje perfecto, ni mucho menos, pero ese es otro debate...
Respecto a:
No estoy de acuerdo. Voy a citar del C++ FAQ Lite:
Fundamentally it boils down to this simple fact: C++ is not C. That means (this might be painful for you!!) you'll need to set aside some of your hard earned wisdom from your vast experience in C. The two languages simply are different. The "best" way to do something in C is not always the same as the "best" way to do it in C++. If you really want to program in C, please do yourself a favor and program in C. But if you want to be really good at C++, then learn the C++ ways of doing things. You may be a C guru, but if you're just learning C++, you're just learning C++ — you're a newbie. (Ouch; I know that had to hurt. Sorry.)
En el caso específico del paso de C a C++ (o viceversa), es especialmente cierto que uno tiene que "olvidarse" de ciertas prácticas que en el anterior lenguaje eran el pan de cada día. Por poco seguras, poco productivas, poco eficientes o cualquier combinación de las anteriores.
En lo relativo a la memoria, es importante saber que malloc no llama al constructor del tipo en cuestión (ni free a su destructor), no devuelve punteros del tipo en cuestión, y no permite ser sobrecargado para el tipo en cuestión. Luego, tratar a new/delete como los equivalentes a malloc/free en C++ es un error.
Precisamente la gestión de memoria es uno de los aspectos en que los métodos disponibles en C++ son muy superiores a los disponibles en C. Por ejemplo, salvo muy honrosas excepciones, por defecto uno jamás tendría que llamar a delete o delete[] manualmente en C++.
Respecto a:
CitarSaber C++ de forma avanzada debería incorporar saber C de forma avanzada también, aunque gestione la memoria de forma distinta.
No estoy de acuerdo. Voy a citar del C++ FAQ Lite:
Fundamentally it boils down to this simple fact: C++ is not C. That means (this might be painful for you!!) you'll need to set aside some of your hard earned wisdom from your vast experience in C. The two languages simply are different. The "best" way to do something in C is not always the same as the "best" way to do it in C++. If you really want to program in C, please do yourself a favor and program in C. But if you want to be really good at C++, then learn the C++ ways of doing things. You may be a C guru, but if you're just learning C++, you're just learning C++ — you're a newbie. (Ouch; I know that had to hurt. Sorry.)
En el caso específico del paso de C a C++ (o viceversa), es especialmente cierto que uno tiene que "olvidarse" de ciertas prácticas que en el anterior lenguaje eran el pan de cada día. Por poco seguras, poco productivas, poco eficientes o cualquier combinación de las anteriores.
En lo relativo a la memoria, es importante saber que malloc no llama al constructor del tipo en cuestión (ni free a su destructor), no devuelve punteros del tipo en cuestión, y no permite ser sobrecargado para el tipo en cuestión. Luego, tratar a new/delete como los equivalentes a malloc/free en C++ es un error.
Precisamente la gestión de memoria es uno de los aspectos en que los métodos disponibles en C++ son muy superiores a los disponibles en C. Por ejemplo, salvo muy honrosas excepciones, por defecto uno jamás tendría que llamar a delete o delete[] manualmente en C++.
