NanoTech ya vinculado a una explicación de los bloques. En cuanto a cómo esto se relaciona con C++ permítame expresar mi opinión personal: Esta extensión es no útil en C++. He aquí por qué:
En cuanto al tipo de referencia de bloque: Ya tenemos "funciones polimórficas" que pueden llevar algún estado a su alrededor, consulte boost::function, tr1::function. C++ incluirá una versión pulida de esto en su próxima biblioteca estándar. La ventaja sobre los "C Blocks" es que no necesita meterse con cosas como Block_copy
y Block_release
. Estos objetos de funciones polimórficas son lo suficientemente inteligentes como para hacer su propia administración de memoria.
En cuanto a la sintaxis literal del bloque: Es una buena sintaxis que le permite poner el código donde "pertenece" sin la necesidad de un código repetitivo. Pero lo mismo se aplica a su parte de contador C++: C++0x lambdas. Pero la característica C++ 0x lambda también le permite usar objetos lambda en circuitos internos ajustados sin costos de alto rendimiento de llamadas a funciones debido a una posible alineación.
Dado que C++ 0x lambdas también se puede usar en situaciones donde el rendimiento es un problema y std :: function es más fácil de manejar w.r.t. administración de memoria, la adición de "C Blocks" a C++ parece redundante. Los "bloques C" parecen estar más adaptados a los idiomas que no admiten plantillas o destructores.
Consulte esta pregunta: http://stackoverflow.com/questions/1366955/suggested-resources-for-learning-about-blocks-in-snow-leopard – Felixyz