Leanpub Header

Skip to main content

Inicialización en C++

Una guía a través de todas las opciones de inicialización y áreas relacionadas con C++

Desde sintaxis básica, reglas de construcción y destrucción, tiempo de vida y deducción de plantillas. Todo lo que deseas saber sobre las técnicas de C++ moderno relacionadas con la inicialización. ¡C++20 (e incluso C++23) incluido!

This book is a translation into Spanish of C++ Initialization Story which was originally written in English

The authors are letting you choose the price you pay for this book!

Pick Your Price...
PDF
EPUB
WEB
About

About

About the Book

¡La inicialización en C++ es un tema candente! El Internet está lleno de debates sobre las mejores prácticas, e incluso hay memes divertidos sobre ese tema. La situación no es sorprendente, ya que hay más de una docena de formas de inicializar un valor entero simple, reglas complejas para la deducción de tipos automáticos, datos miembro y matices del tiempo de vida de objetos. 

Y aquí viene el libro.

A lo largo de este texto, aprenderás opciones prácticas para inicializar varias categorías de variables y datos miembro en C++ moderno. Más específicamente, este texto enseña varios tipos de inicialización, constructores, inicialización de datos miembro no estáticos, variables en línea, inicializadores designados y más. Además, verás los cambios y las nuevas técnicas de C++11 a C++20 y muchos ejemplos para completar tu comprensión.

¡Aprende C++ desde la perspectiva de la inicialización en C++!

El plan es explicar la mayoría (si no todas) las partes de la inicialización, aprender muchas técnicas excelentes de C++ y ver qué sucede debajo del capó o cofre.

El objetivo de este libro es equiparte con los siguientes conocimientos:

  • Explicar las reglas sobre la inicialización de objetos, incluidas las variables regulares, los datos miembro y los objetos no locales.
  • Cómo implementar funciones miembro especiales (constructores, destructores, operaciones de copia/movimiento) y cuándo son útiles.
  • Cómo inicializar eficientemente datos miembro no estáticos usando funciones de C++11, tales como inicialización de datos miembro no estáticos, constructores herederos y delegadores.
  • Cómo agilizar el trabajo con variables estáticas y datos miembro estáticos con variables `inline` de C++17.
  • Cómo trabajar con miembros tipo contenedor, datos miembro no copiables (como datos miembro `const`) o datos miembro que solo se pueden mover, o incluso lambdas.
  • Qué es un agregado y cómo crear tales objetos con inicializadores designados de C++20.

El libro contiene 14 capítulos con la siguiente estructura:

  • Los capítulos 1 a 5 crean una base para el resto del libro. Cubren las reglas básicas de inicialización, los constructores, los destructores y los conceptos básicos de los datos miembro.
  • El capítulo 6 es un breve cuestionario sobre constructores. Puedes comprobar tus conocimientos desde la primera "parte" del libro.
  • El capítulo 7 trata sobre la deducción de tipos.
  • El capítulo 8 describe la inicialización de datos miembro no estáticos (NSDMI por sus siglas en inglés), una potente característica de C++11 que mejora la forma en que trabajamos con datos miembro. Al final del capítulo, puede resolver algunos ejercicios.
  • El capítulo 9 analiza cómo inicializar datos miembro similares a contenedores.
  • El capítulo 10 contiene información sobre datos miembro no regulares y cómo manejarlos en una clase. Aprenderás sobre `const`, `unique_ptr` como datos miembro y referencias.
  • El capítulo 11 describe variables estáticas no locales, objetos estáticos, varias opciones de duración de almacenamiento y variables `inline` de C++17 y `constinit` de C++20.
  • El capítulo 12 pasa a C++20 y describe los inicializadores designados, una función útil basada en algo similar del lenguaje C.
  • El capítulo 13 muestra varias técnicas, como pasar cadenas a constructores, tipificación firme, un contador de clases de patrón de plantilla curiosamente recurrente (o CRTP por sus siglas en inglés), copiar e intercambiar expresiones idiomáticas del lenguaje, y más.
  • El capítulo 14 es el cuestionario final con preguntas de todo el libro.

Y hay dos apéndices:

  • Apéndice A – una guía útil sobre las reglas para las funciones miembro especiales generadas por el compilador.
  • Apéndice B – respuestas a cuestionarios y ejercicios.

¿Para quién es este libro?

El libro está destinado a programadores de C++ principiantes o intermedios que desean aprender varios aspectos de la inicialización en C++ moderno (de C++11 a C++20).

Debes conocer al menos algunos de los aspectos básicos de la creación y el uso de clases personalizadas.

Este texto también es útil para los programadores experimentados que conocen los estándares de C++ más antiguos y desean pasar a C++17/C++20.

Puedes ver las reseñas para la versión en inglés del libro en:

C++ Initialization Story by Bartłomiej Filipek @Goodreads

Share this book

Categories

This book is a translation into Spanish of C++ Initialization Story which was originally written in English

Price

Pick Your Price...

Minimum price

$14.99

$19.99

You pay

$19.99

Authors earn

$15.99
$

All prices are in US $. You can pay in US $ or in your local currency when you check out.

EU customers: prices exclude VAT, which is added during checkout.

...Or Buy With Credits!

Number of credits (Minimum 1)

1
The author will earn $12.00 from your purchase!
You can get credits monthly with a Reader Membership

Author

About the Authors

Bartłomiej Filipek

Bartłomiej (Bartek) Filipek is a C++ software developer from the beautiful city of Cracow in Poland He started his professional coding career in 2007. In 2010 he graduated from Jagiellonian University in Cracow, Poland, with a Master's Degree in Computer Science.

Bartek currently works at Xara, where he develops features for advanced document editors. He also has experience with desktop graphics applications, game development, large-scale systems for aviation, writing graphics drivers and even biofeedback. In the past, Bartek has also taught programming (mostly game and graphics programming courses) at local universities in Cracow.

Since 2011 Bartek has been regularly blogging at bfilipek.com and cppstories.com. Initially, the topics revolved around graphics programming, but now the blog focuses on core C++. He's also a co-organiser of the C++ User Group in Cracow. You can hear Bartek in one @CppCast episode where he talks about C++17, blogging and text processing.

Since October 2018, Bartek has been a C++ Expert for the Polish National Body, which works directly with ISO/IEC JTC 1/SC 22 (C++ Standardisation Committee).

In the same month, Bartek was awarded his first MVP title for the years 2019/2020 by Microsoft.

In his spare time, he loves assembling Lego models with his little son.

See his blog at cppstories.com.

Javier Estrada

Javier Estrada is a C++ software developer in Southern California. He started his professional career in 1988 and graduated from the Instituto Tecnológico de Chihuahua with a BS of Industrial Engineering and Electronics.

As of today, Javier works at Motorola Solutions, where he develops software for public safety in C++ and Java. In the past, Javier has also taught programming courses in Python and Java for robotics teams in the regional high schools in Southern California.

Javier publishes in his blog Se Habla C++, where he deals with general topics and reviews of CPPCON sessions by different authors.

Javier is the translator of C++17 - La guía completa, and one of the main editors of Referencia de C++.

In his free time, Javier enjoys a good game of chess and a good book.

* * *

Javier Estrada es un desarrollador de software de C++ en el sur de California. Inició su carrera profesional en 1988 y se graduó del Instituto Tecnológico de Chihuahua con una Ingeniería Industrial en Electrónica.

Javier actualmente trabaja en Motorola Solutions, donde desarrolla software para seguridad pública en C++ y Java. En el pasado Javier también ha impartido cursos de programación en Python y Java para equipos de robótica de escuelas preparatorias regionales en el sur de California.

Javier publica en su blog Se Habla C++, donde trata temas generales y reseñas de presentaciones en CPPCON por distintos autores.

Javier es el traductor de C++17 - La guía completa y uno de los editores principales de Referencia de C++.

En su tiempo libre, Javier disfruta de una buena partida de ajedrez y un buen libro.

Contents

Table of Contents

Sobre el libro

  1. ¿Por qué debes leer este libro?
  2. Objetivos de aprendizaje
  3. Estructura del libro
  4. Para quién es este libro
  5. Requisitos previos
  6. Retroalimentación del lector y errata
  7. Código de ejemplo
  8. Formateo y secciones especiales

Sobre el autor

Sobre el traductor

Agradecimientos

Historial de revisiones

1.Objetos locales

  1. Empezar con tipos simples
  2. Puesta de los valores en cero
  3. Copia e inicialización directa
  4. Inicialización con agregados
  5. Inicialización por defecto de datos miembro
  6. Resumen

2.Inicialización con constructores

  1. Definición de una clase
  2. Fundamentos de los constructores
  3. Cuerpo de un constructor
  4. Agregar constructores a DataPacket
  5. Constructores por defecto generados por el compilador
  6. Constructores explícitos y conversiones
  7. Diferencia entre inicialización directa y por copia
  8. Conversión implícita y constructores de conversión
  9. Resumen de los constructores

3.Operaciones de copia y movimiento

  1. Constructor de copia
  2. Constructor de movimiento
  3. Distinguir de la asignación
  4. Agregar el registro de depuración a los constructores
  5. Clases triviales y constructores por defecto proporcionados por el usuario
  6. Resumen

4.Constructores delegadores y herederos

  1. Constructores delegadores
  2. Limitaciones
  3. Herencia
  4. Constructores herederos
  5. Resumen

5.Destructores

  1. Conceptos básicos
  2. Objetos asignados en el montículo de memoria
  3. Destructores y datos miembro
  4. Destructores virtuales y polimorfismo
  5. Objetos creados parcialmente
  6. Un destructor generado por el compilador
  7. Resumen y casos de uso

6.Deducción de tipos e inicialización

  1. Deducción con auto
  2. Acerca de las categorías de valor en C++
  3. Reglas para la deducción de tipo auto
  4. Deducción con decltype
  5. Imprimir información de tipo
  6. Vínculos estructurados a partir de C++17
  7. Deducción de argumentos de plantilla para plantillas de clase
  8. Extensión del tiempo de vida, referencias y bucles
  9. Casi siempre auto (AAA)
  10. Resumen

7.Cuestionario de los capítulos 1…6

8.Inicialización de datos miembro no estáticos

  1. Cómo funciona
  2. Investigación
  3. Experimentos
  4. Otras formas de NSDMI
  5. Constructor de copia y NSDMI
  6. Constructor de movimiento y NSDMI
  7. Cambios en C++14
  8. Cambios en C++20
  9. Limitaciones de NSDMI
  10. NSDMI: ventajas y desventajas
  11. Resumen

9.Contenedores como datos miembro

  1. Fundamentos
  2. Usar std::initializer_list
  3. Implementación del ejemplo
  4. El costo de copiar elementos
  5. Algunos inconvenientes - tipos no copiables
  6. Más opciones (avanzado)
  7. Resumen

10.Datos miembro no regulares

  1. Datos miembro constantes no estáticos
  2. Punteros como datos miembro
  3. Punteros inteligentes como datos miembro
  4. Referencias como datos miembro
  5. Resumen

11.Objetos no locales

  1. Duración de almacenamiento y enlace
  2. Inicialización de objetos estáticos no locales
  3. constinit en C++20
  4. Variables estáticas en el ámbito de una función
  5. Sobre los datos miembro estáticos
  6. Motivación para las variables en línea
  7. Variables globales en línea (inline)
  8. constexpr y variables inline
  9. Resumen

12.Agregados e inicializadores designados en C++20

  1. Agregados en C++20
  2. Los conceptos básicos de los inicializadores designados
  3. Reglas
  4. Ventajas de la inicialización designada
  5. Ejemplos
  6. Resumen

13.Técnicas y casos de uso

  1. Uso de explicit para tipificación fuerte
  2. La mejor manera de inicializar datos miembro de tipo std::string
  3. Reducción de copias adicionales a través de emplace e in_place
  4. El modismo copiar-e-intercambiar
  5. Contador de clase usando el modismo CRTP
  6. Varios tipos de inicialización en una clase
  7. Singleton de Meyer y C++11
  8. Fábrica con tipos de autorregistro e inicialización estática
  9. Resumen

14.El cuestionario final y ejercicios

  1. Ejercicios

Apéndice A – Reglas para la generación de funciones miembro especiales

  1. El diagrama
  2. Reglas

Apéndice B - Cuestionario y respuestas a los ejercicios

  1. El cuestionario de los capítulos del 1 al 6
  2. El cuestionario final
  3. Solución al primer problema de codificación, NSDMI
  4. Solución al segundo problema de codificación, NSDMI
  5. Solución al tercer problema de codificación, inline
  6. Solución al cuarto problema de codificación, corrección de código

Referencias

Get the free sample chapters

Click the buttons to get the free sample in PDF or EPUB, or read the sample online here

The Leanpub 60 Day 100% Happiness Guarantee

Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.

Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.

You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!

So, there's no reason not to click the Add to Cart button, is there?

See full terms...

Earn $8 on a $10 Purchase, and $16 on a $20 Purchase

We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.

(Yes, some authors have already earned much more than that on Leanpub.)

In fact, authors have earned over $14 million writing, publishing and selling on Leanpub.

Learn more about writing on Leanpub

Free Updates. DRM Free.

If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).

Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.

Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.

Learn more about Leanpub's ebook formats and where to read them

Write and Publish on Leanpub

You can use Leanpub to easily write, publish and sell in-progress and completed ebooks and online courses!

Leanpub is a powerful platform for serious authors, combining a simple, elegant writing and publishing workflow with a store focused on selling in-progress ebooks.

Leanpub is a magical typewriter for authors: just write in plain text, and to publish your ebook, just click a button. (Or, if you are producing your ebook your own way, you can even upload your own PDF and/or EPUB files and then publish with one click!) It really is that easy.

Learn more about writing on Leanpub