Lo que puede llevarlo a preguntarse si la información y los consejos en esta edición anterior a C ++ 0x de Effective C ++ siguen siendo relevantes. Me complace informar que sí. Sorprendentemente, de hecho. Después de pasar casi dos años inmerso en los detalles de C ++ 0x, esperaba gemir un poco al revisar la tabla de contenido de este libro con C ++ 0x en mente. Seguramente algunos artículos serían inapropiados. Pero el consejo que encontré resultó sólido. ¿Deberían los desarrolladores de C ++ 0x preferir consts, enumeraciones e inlines a
#defines
(Artículo 2)? Ellos deberían. ¿Deben evitar que las excepciones dejen destructores (Artículo 8)? Ciertamente. ¿Deberían usar objetos para administrar recursos? ¿Declarar que los miembros de datos son privados? ¿Considerar alternativas a las funciones virtuales? ¿Factorizar código independiente de parámetros a partir de plantillas? (Artículos 13, 22, 35 y 44.) ¡Sí, sí, sí, sí! Mi objetivo siempre ha sido que la tabla de contenido de Effective C ++ resuma los consejos del libro, y ese resumen sigue siendo tan aplicable al desarrollo de C ++ 0x como al desarrollo de C ++ "tradicional". C ++ 0x es un lenguaje más grande, y de alguna manera es diferente, pero las técnicas básicas para hacer un uso efectivo de C ++ "antiguo" son también centrales para el uso efectivo de C ++ 0x.
Esto no significa que este eficaz C ++ sea una combinación perfecta para C ++ 0x. El libro no trata las características nuevas de C ++ 0x, por lo que faltan elementos sobre el uso efectivo de esas características. Un C ++ efectivo C ++ 0xified ciertamente tendría elementos dedicados a operaciones de movimiento, inicialización uniforme y expresiones lambda, y probablemente tendría un capítulo completo sobre el uso eficaz de la API de concurrencia. Dicho libro también contendría diferentes ejemplos, por ejemplo, los que utilizan variables automáticas, basados en rangos para bucles, inicializadores predeterminados en clase, así como la plantilla variable ocasional. En la medida en que este libro no sea compatible con C ++ 0x, los errores son de omisión, no de comisión.