stringtranslate.com

Inicialización (programación)

En programación informática , la inicialización o inicialización es la asignación de un valor inicial para un objeto de datos o una variable. La forma en que se realiza la inicialización depende del lenguaje de programación , así como del tipo, la clase de almacenamiento, etc., de un objeto que se va a inicializar. Las construcciones de programación que realizan la inicialización se denominan normalmente inicializadores y listas de inicializadores . La inicialización es distinta de (y precedida por) la declaración , aunque a veces las dos pueden confundirse en la práctica. El complemento de la inicialización es la finalización , que se utiliza principalmente para objetos, pero no para variables.

La inicialización se realiza mediante la incorporación estática del valor en tiempo de compilación o mediante asignación en tiempo de ejecución . Una sección de código que realiza dicha inicialización generalmente se conoce como "código de inicialización" y puede incluir otras funciones únicas, como abrir archivos; en la programación orientada a objetos , el código de inicialización puede ser parte de un constructor (método de clase) o un inicializador (método de instancia). Establecer una ubicación de memoria en ceros hexadecimales también se conoce a veces como "borrado" y a menudo se realiza mediante una instrucción exclusiva o (ambos operandos especifican la misma variable), a nivel de código de máquina , ya que no requiere acceso a memoria adicional.

Familia de lenguajes C

Inicializador

En C/C99/C++, un inicializador es una parte opcional de un declarador . Consiste en el carácter '=' seguido de una expresión o una lista de expresiones separadas por comas colocadas entre llaves. La última lista a veces se denomina "lista de inicializadores" o "lista de inicialización" (aunque el término "lista de inicializadores" se reserva formalmente para la inicialización de miembros de clase/estructura en C++; consulte a continuación). Una declaración que crea un objeto de datos, en lugar de simplemente describir su existencia, se denomina comúnmente definición .

A muchos les resulta conveniente establecer una distinción entre los términos "declaración" y "definición", como en la frase comúnmente vista "la distinción entre una declaración y una definición ...", lo que implica que una declaración simplemente designa un objeto de datos (o función). De hecho, según el estándar C++ , una definición es una declaración. Aun así, el uso "declaraciones y definiciones", aunque formalmente incorrecto, es común. [1] Aunque todas las definiciones son declaraciones, no todas las declaraciones son definiciones.

Ejemplos de C:

int i = 0 ; int k [ 4 ] = { 0 , 1 }; char tx [ 3 ] = 'a' ; char ty [ 2 ] = 'f' ; estructura Punto { int x ; int y ;} p = { . y = 13 , . x = 7 };                            

Ejemplos de C++:

int i2 ( 0 ); int j [ 2 ] = { rand (), k [ 0 ]}; MiClase * xox = nueva MiClase ( 0 , "zaza" ); punto q = { 0 , i + 1 };                

Lista de inicializadores

En C++, un constructor de una clase/estructura puede tener una lista de inicializadores dentro de la definición pero antes del cuerpo del constructor. Es importante tener en cuenta que cuando se utiliza una lista de inicialización, los valores no se asignan a la variable, sino que se inicializan. En el siguiente ejemplo, se inicializa 0 en re e im. Ejemplo:

estructura IntComplex { IntComplex () : re ( 0 ), im ( 0 ) {}        int re ; int im ; };   

Aquí, la construcción  : re(0), im(0)es la lista de inicializadores.

A veces, el término "lista de inicializadores" también se utiliza para referirse a la lista de expresiones en el inicializador de la matriz o estructura.

C++11 proporciona un concepto más potente de listas de inicializadores , por medio de una plantilla, llamada std::initializer_list .

Inicialización predeterminada

La inicialización de datos puede ocurrir sin una sintaxis explícita en un programa para hacerlo. Por ejemplo, si las variables estáticas se declaran sin un inicializador, entonces las de tipos de datos primitivos se inicializan con el valor cero del tipo correspondiente, mientras que los objetos estáticos del tipo de clase se inicializan con sus constructores predeterminados .

Véase también

Referencias

  1. ^ Preguntas frecuentes sobre C++ , por Cline, Lomow y Girou, Addison-Wesley, 1999, ISBN  0-201-30983-1 .