Clases de almacenamiento en C++

🙎‍♂️ Binario Assembler 📆 23/10/2024

📁 Programación, C++ ⌛ 10 min de lectura

► Variables y constantes: Clases de almacenamiento en C++

Las clases de almacenamiento o (storage classes) son un conjunto de especificadores que determinan la vida útil, el scope y la visibilidad de las variables y funciones dentro de un programa.

Los especificadores permiten cómo almacenar una variable y cómo acceder a ciertas partes del programa.

Clases de almacenamiento

Existen seis clases de almacenamiento, en C++ son las siguientes:

Clase de almacenamiento automático (auto)

Este es el tipo por defecto para variables locales, son aquellas variables que se declaran dentro de una función. No es necesario especificar el keyword auto, puesto que son variables automáticas.

Clase de almacenamiento externo (extern)

Es usado para declarar una variable o función que se define en otro archivo o en otro punto del programa, permitiendo compartir variables y funciones entre distintos archivos de C++.

Clase de almacenamiento estático (static)

Cumple diferentes funciones dependiendo de su aplicación. Las variables estáticas tienen la propiedad de conservar su valor incluso si esta se encuentre fuera de su alcance (scope).

Es así, que las variables estáticas conservan su valor de su último scope que fue definido.

Clase de almacenamiento registro (register)

Tiene la misma funcionalidad que la de las variables automáticas, la diferencia es que sugiere almacenar la variable en un registro de la CPU en lugar de la memoria principal (si es posible).

Esto hace que el acceso a la variable sea más rápido. No obstante, solo es una sugerencia del compilador, no garantiza que la variable sea almacenada en un registro.

Clase de almacenamiento mutado (mutable)

Permite modificar un miembro de un objeto 'const', normalmente no se pueden modificar miembros de un objeto que han sido declarado como una constante, pero si un miembro está declarado como mutable se permite su modificación.

Este especificador mutable no afecta el vícnulo ni la vida útil del objeto porque será igual al objeto declarado en ese lugar.

Clase de almacenamiento thread_local

Define el objeto como 'hilo local'; esta variable se puede combinar con otros especificadores de almacenamiento como static o extern, provocando que las propiedades de un thread_local cambien.

Estructura de clase de almacenamiento

clase de almacenamiento especificador vida útil visibilidad valor inicial
Automático auto Bloque de funciones local Basura
Externo extern Programa completo Global 0
Estático static Programa completo Local 0
Registro register Bloque de funciones Local Basura
Mutado mutable Clases Local Basura
Hilo local thread_local Hilo entero Local o global Basura

Las storage classes sirven para una mejor administración del ciclo de vida, visibilidad de variables y funciones del programa. De los especificadores más usados tenemos a static, extern y mutable.

Imagen del autor

Publicado por: Binario Assembler

Programador profesional, especialista en Backend y Frontend.

¡Este verano estudia con nosotros!

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.