febrero 21, 2010
Una de las críticas habituales de C++ está relacionada con las enumeraciones y se debe principalmente a la herencia de C. Para resolver estas cuestiones, en C++0x se añaden varias nuevas formas de definir enumeraciones. Estos cambios pueden no parecer especialmente significativos, sobre todo comparándolos con otros, pero en mi opinión es importante conocer la nueva sintaxis, aunque solo sea para entender la documentación en la que aparecen.
(más…)
Filed under:
C++0x by rodrigo
febrero 19, 2010
Si alguna vez has utilizado (o intentado utilizar) la clase std::auto_ptr probablemente habrás notado que es una clase rara. Pero ya no hay que preocuparse por ella porque en C++0x ha sido marcada oficialmente como obsoleta. La funcionalidad que aportaba (o lo intentaba) esta clase la proporciona con ventaja la nueva std::unique_ptr.
(más…)
Filed under:
C++0x by rodrigo
febrero 18, 2010
En el post anterior describía cómo las referencias a R-valor permiten definir un constructor de movimiento y un operador de movimiento. Una clase que implementa ambos se llama clase movible.
(más…)
Filed under:
C++0x by rodrigo
febrero 15, 2010
En un post anterior comentaba que en C++ no se puede vincular una referencia a un objeto temporal. En C++0x existe un nuevo tipo de referencias diseñadas para hacer precisamente esto: las referencias a R-valor. Este cambio, aparentemente sutil, es uno de los más importantes del nuevo estándar, y que condiciona muchos de los añadidos adicionales. Por eso es importante comprenderlas bien.
(más…)
Filed under:
C++0x by rodrigo
febrero 12, 2010
Quiero protestar desde aquí contra la costumbre, bastante extendida, de comparar valores booleanos directamente con las constantes true y false.
Es decir:
¡No tiene sentido! El resultado de comparar una expresión booleana con true es siempre la propia expresión.
(más…)
Filed under:
C++ by rodrigo
febrero 11, 2010
¿Es posible en C++ declarar una referencia a referencia? Y si se puede, ¿qué significa?
A primera vista parece que no se puede, el siguiente código provoca un error de sintaxis:
(más…)
Filed under:
C++ by rodrigo
febrero 10, 2010
¿Alguna vez has visto una sentencia como la del título y te has preguntado para qué sirve?
Tal construcción tiene básicamente dos usos, y curiosamente ambos están bastante mal vistos en C++: macros y gotos.
(más…)
Filed under:
C++ by rodrigo
febrero 9, 2010
Hay quien considera que las referencias de C++ no son más que punteros constantes, que se des-referencian automáticamente. Según esto estos códigos son prácticamente equivalentes:
Con referencia:
int x = 1;
int &r = x;
r = 2;
std::cout < < r << std::endl;
(más…)
Filed under:
C++ by rodrigo
febrero 8, 2010
error: se requiere un l-valor como operando izquierdo de la asignación
Si has visto alguna vez este error quizás que hayas preguntado qué es exactamente un L-valor y para qué sirve. Es curioso que se puede programar durante muchos años en C++ (o en C, de donde se hereda este concepto) sin tener que preocuparse ni una sola vez por el significado de este mensaje de error. Basta con observar la línea fuente con detenimiento y el error resulta obvio:
(más…)
Filed under:
C++ by rodrigo
febrero 2, 2010
Se llama informalmente C++0x a la inminente versión del lenguaje C++.
El 0x no tiene nada que ver con hexadecimal, sino que se debe a la costumbre de referirse a los estándares de lenguajes de programación por los dos últimos dígitos del año en el que se publica, y se prevé que este se publique antes de final de 2009, o sea, en el año 0x …
Bueno… las cosas de palacio van despacio, quizás se termine finales de 2010.
Esta nueva versión de C++ trae muchas y emocionantes novedades, que, aunque se enumeran en varias páginas de Internet (casi todas en inglés), no suelen explicarse como es debido, y casi nunca incluyen usos prácticos.
Y eso es lo que yo pretendo: hacer C++0x fácil, divertido y asequible.
Filed under:
C++0x by rodrigo