Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
highlevel:c:effective [2008/09/15 09:23] alfred |
highlevel:c:effective [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 12: | Línea 12: | ||
| Es decir, es preferible el ''cout'' o el ''cin'' al ''printf'' o ''getch''. \\ | Es decir, es preferible el ''cout'' o el ''cin'' al ''printf'' o ''getch''. \\ | ||
| Remarcar también que incluir ''iostream'' es distinto a incluir ''iostream.h'', esta segunda contiene las funciones como globales en vez de estar dentro de los namespaces, llevando a poder provocar algún error de nombres. | Remarcar también que incluir ''iostream'' es distinto a incluir ''iostream.h'', esta segunda contiene las funciones como globales en vez de estar dentro de los namespaces, llevando a poder provocar algún error de nombres. | ||
| + | |||
| + | |||
| + | |||
| + | |||
| Línea 23: | Línea 27: | ||
| </code> | </code> | ||
| Cuando creamos un puntero nulo lo inicializaremos como 0, no como ''NULL''. \\ | Cuando creamos un puntero nulo lo inicializaremos como 0, no como ''NULL''. \\ | ||
| - | Llamaremos a los delete a los punteros miembros de una clase dentro del destructor de esta. | + | Llamaremos a los delete a los punteros miembros de una clase dentro del destructor de esta. \\ \\ |
| + | |||
| + | Debemos estar preparados por si el sistema se quedase sin memoria, para ello existe una función llamada ''set_new_handler'' que recibe por parámetro la función que se llamará si esto ocurriese: | ||
| + | <code cpp> | ||
| + | void noMoreMemory() { | ||
| + | cerr << "Unable to satisfy request for memory\n"; | ||
| + | abort(); | ||
| + | } | ||
| + | |||
| + | int main() { | ||
| + | set_new_handler(noMoreMemory); | ||
| + | for (long i=0; i<100000000; i++) | ||
| + | new long[100000000]; | ||
| + | } | ||
| + | </code> | ||
| ===== More Effective C++ ====== | ===== More Effective C++ ====== | ||