Enumeraciones en C++0x

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…)

0

std::unique_ptr

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…)

0

Referencias a R-valor (2ª parte)

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…)

1

Referencias a R-valor (1ª parte)

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…)

0

Comparación entre booleanos

febrero 12, 2010
Tags: , , ,

Quiero protestar desde aquí contra la costumbre, bastante extendida, de comparar valores booleanos directamente con las constantes true y false.
Es decir:

if (cond == true)
    ...;

¡No tiene sentido! El resultado de comparar una expresión booleana con true es siempre la propia expresión.
(más…)

2

Referencias a referencias

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:

1
2
int x;
int & & t;

(más…)

0

do … while (0)

febrero 10, 2010
Tags: , ,

¿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…)

0

Referencias

febrero 9, 2010
Tags:

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…)

2

L-valores y R-valores

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:

    int x;
    &x = 1;

(más…)

0

C++0x

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.

0