Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Clases de almacenamiento en C++

Una clase de almacenamiento define el alcance (visibilidad) y el tiempo de vida de las variables y/o funciones dentro de un programa C++. Estos especificadores preceden al tipo que modifican. Existen las siguientes clases de almacenamiento, que se pueden usar en un programa C++

La clase de almacenamiento automático

El automático clase de almacenamiento es la clase de almacenamiento predeterminada para todas las variables locales.

{
   int mount;
   auto int month;
}

El ejemplo anterior define dos variables con la misma clase de almacenamiento, auto solo se puede usar dentro de funciones, es decir, variables locales.

La clase de almacenamiento de registro

El registro La clase de almacenamiento se usa para definir variables locales que deben almacenarse en un registro en lugar de RAM. Esto significa que la variable tiene un tamaño máximo igual al tamaño del registro (generalmente una palabra) y no se le puede aplicar el operador unario '&' (ya que no tiene una ubicación de memoria).

{
   register int  miles;
}

El registro solo debe usarse para variables que requieren un acceso rápido, como contadores. También se debe tener en cuenta que definir 'registro' no significa que la variable se almacenará en un registro. Significa que PUEDE almacenarse en un registro dependiendo del hardware y las restricciones de implementación.

La clase de almacenamiento estático

La estática La clase de almacenamiento indica al compilador que mantenga una variable local en existencia durante la vida útil del programa en lugar de crearla y destruirla cada vez que entra y sale del alcance. Por lo tanto, hacer que las variables locales sean estáticas les permite mantener sus valores entre llamadas a funciones.

El modificador estático también se puede aplicar a variables globales. Cuando se hace esto, hace que el alcance de esa variable se restrinja al archivo en el que se declara.

En C++, cuando se usa estática en un miembro de datos de clase, hace que todos los objetos de su clase compartan solo una copia de ese miembro.

Demostración en vivo
#include <iostream>
 
// Function declaration
void func(void);
 
static int count = 10; /* Global variable */
 
main() {
   while(count--) {
      func();
   }
   
   return 0;
}

// Function definition
void func( void ) {
   static int i = 5; // local static variable
   i++;
   std::cout << "i is " << i ;
   std::cout << " and count is " << count << std::endl;
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

i is 6 and count is 9
i is 7 and count is 8
i is 8 and count is 7
i is 9 and count is 6
i is 10 and count is 5
i is 11 and count is 4
i is 12 and count is 3
i is 13 and count is 2
i is 14 and count is 1
i is 15 and count is 0

La clase de almacenamiento externo

El externo La clase de almacenamiento se usa para dar una referencia de una variable global que es visible para TODOS los archivos del programa. Cuando usa 'extern', la variable no se puede inicializar ya que todo lo que hace es apuntar el nombre de la variable a una ubicación de almacenamiento que se ha definido previamente.

Cuando tiene varios archivos y define una variable o función global, que también se usará en otros archivos, entonces extern se usará en otro archivo para dar referencia de variable o función definida. Solo para entender extern se utiliza para declarar una variable o función global en otro archivo.

El modificador externo se usa más comúnmente cuando hay dos o más archivos que comparten las mismas funciones o variables globales, como se explica a continuación.

Primer archivo:main.cpp

#include <iostream>
int count ;
extern void write_extern();
 
main() {
   count = 5;
   write_extern();
}

Segundo archivo:support.cpp

#include <iostream>

extern int count;

void write_extern(void) {
   std::cout << "Count is " << count << std::endl;
}

Aquí, externo La palabra clave se está utilizando para declarar el conteo en otro archivo. Ahora compile estos dos archivos de la siguiente manera −

$g++ main.cpp support.cpp -o write

Esto producirá escribir programa ejecutable, intente ejecutar escribir y verifique el resultado de la siguiente manera −

$./write
5

La clase de almacenamiento mutable

El mutable El especificador se aplica solo a los objetos de clase, que se analizan más adelante en este tutorial. Permite que un miembro de un objeto anule la función de miembro const. Es decir, un miembro mutable puede ser modificado por una función de miembro const.


Lenguaje C

  1. Operadores de C++
  2. Clases y objetos de C++
  3. Función amiga de C++ y Clases amigas
  4. Plantillas de clase de C++
  5. Clase de almacenamiento C
  6. C - Clases de almacenamiento
  7. Polimorfismo en C++
  8. Abstracción de datos en C++
  9. Encapsulación de datos en C++
  10. Interfaces en C++ (Clases Abstractas)
  11. C# - Clases