En general estoy de acuerdo. Aún así, hay situaciones en las que la
STL no proporciona la eficiencia suficiente, o no es apropiada. Por
ejemplo la STL genera, por su uso intensivo de plantillas, ejecutables
demasiado grandes para sistemas embebidos. También existen muchos
casos dónde es necesario un control mas directo sobre la disposición
en memoria de los elementos, o minimizar las llamadas a malloc y free.
Al respecto hay un interesantísimo artículo de la EA STL, una
modificación de la STL que usan en Electronic Arts dónde se demuestra
que el ingenio es capaz de unir elegancia y eficiencia:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2271.html
> En definitiva, que yo entiendo, me gusta y manejo el concepto de puntero
> perfectamente, pero prefiero usar otras herramientas. Siendo muy
> estrictos, el puntero es una herencia de C que no tendría por qué existir
> si C++ no hubiera tenido por qué tener retrocompatibilidad con C
> (que alguien me corrija si me equivoco, pero creo que es posible vivir
> sin punteros).
>
Sí, te equivocas :p. Básicamente porque las referencias de C++ son
estáticas, es decir, sólo se les puede asignar un valor en su
declaración. Además es imposible que una referencia apunte a "null",
porque una referencia supuestamente contiene es inmediatamente
"dereferencia" del objeto al que apunta, y uno no puede dereferenciar
null.
Aun así, cuando salga el C++0x con su unique_ptr, shared_ptr, weak_ptr
y las move-semantics para el auto_ptr, será posible vivir sin punteros
(aunque no siempre deseable).
Aún así, estoy de acuerdo en que en C++ se debe, y es posible,
minimizar el uso de punteros. De todas formas el RAII y los
destructores proporcionan una herramienta excelente para hacer un uso
sensato de los punteros, y también de otros recursos.
> Por cierto, el proyecto tendría que liberarlo. A ver si hablo con el jefe
> :).
>
Ánimo.
Un saludo,
JP
Pero vamos, que si todo fuera la eficiencia, no usaríamos lenguajes de script ;).