Red de conocimiento informático - Computadora portátil - palabra clave estática en C++

palabra clave estática en C++

La estática orientada a procedimientos en C++ es la misma que la estática en lenguaje C. En C++, la estática se utiliza de dos maneras: estática en programación procedimental y estática en programación orientada a objetos. El primero se aplica a variables y funciones ordinarias y no involucra clases; el segundo explica principalmente el papel de la estática en las clases.

I. Estatización en diseño orientado a procesos

1. Variables globales estáticas

Agregue la palabra clave static delante de la variable global y la variable queda definida. Es una variable global estática. Veamos primero un ejemplo de una variable global estática:

//Ejemplo 1

#include

void fn();

static int n; //definir variable global estática

void main()

{ n=20; <

fn();

}

{ n++; p>

}

Compile y ejecute el Ejemplo 2. Encontrará que los códigos anteriores se compilan respectivamente, pero se producen errores durante la ejecución. Intente cambiar

static int n; //definir variable global estática

a

int n; //definir variable global

Compile y ejecute el programa nuevamente para comprender la diferencia entre variables globales y variables globales estáticas.

2. Variables locales estáticas

Agregue la palabra clave static antes de una variable local y la variable se define como una variable local estática.

Veamos primero un ejemplo de variables locales estáticas:

//Ejemplo 3

#include

void fn();

void main()

{ fn();

fn();

fn();

}

void fn()

{ static int n=10

cout<

p>

n++;

}

Normalmente, una variable se define en el cuerpo de la función y se asigna memoria de pila para la variable local cuando el programa alcanza la declaración. Pero cuando el programa sale del cuerpo de la función, el sistema recuperará la memoria de la pila y las variables locales caducarán en consecuencia.

Pero a veces necesitamos guardar el valor de una variable entre llamadas. La idea habitual es definir una variable global para lograrlo. Pero de esta forma las variables ya no pertenecen a la función en sí, ni son controladas individualmente por la función, lo que trae inconvenientes al mantenimiento del programa.

Las variables locales estáticas solucionan este problema. Las variables locales estáticas se almacenan en el área de datos globales en lugar de en la pila, y sus valores se conservan hasta la próxima llamada hasta la próxima vez que se asigne un nuevo valor.

Las variables locales estáticas tienen las siguientes características:

Las variables asignan memoria en el área de datos globales;

Las variables locales estáticas se inicializan por primera vez cuando el programa se ejecuta según la declaración del objeto, es decir, ya no se inicializará en llamadas de función posteriores;

Las variables locales estáticas generalmente se inicializan cuando se declaran. Si no se inicializan explícitamente, se inicializan automáticamente a 0;

Siempre reside en el área de datos globales hasta el final de la ejecución del programa. Pero su alcance es un alcance local. Cuando finaliza su definición de función o bloque de declaración, su alcance también finaliza;

3 Funciones estáticas

En funciones, la palabra clave estática se agrega antes del retorno. tipo, y la función se define como una función estática.

Una función estática se diferencia de una función ordinaria en que solo puede ser visible en el archivo en el que está declarada y no puede ser utilizada por otros archivos.

Ejemplo de función estática:

//Ejemplo 4

#include

static void fn();/ /Declarar función estática

void main()

{

fn( );

}

void fn()/ / Definir función estática

{ int n=10;

cout<

}

Beneficios de definir funciones estáticas:

Las funciones estáticas no pueden ser utilizadas por otros archivos;

Las funciones estáticas no pueden ser utilizadas por otros archivos;

Funciones estáticas en otros archivos No disponible. p>

Las funciones con el mismo nombre se pueden definir en otros archivos sin conflicto;