(que puede cambiar su valor en el transcurso del programa)
¿O la 'instancia de algo' está estrictamente relacionada con las clases y los objetos? Si es así, ¿cómo definiría el concepto de 'variable' cuando se trata de C ++?
(que puede cambiar su valor en el transcurso del programa)
¿O la 'instancia de algo' está estrictamente relacionada con las clases y los objetos? Si es así, ¿cómo definiría el concepto de 'variable' cuando se trata de C ++?
Respuestas:
Hasta donde sé, es correcto llamar valores de instancias de tipos primitivos de ese tipo (ver, por ejemplo, "Sistema de tipos C ++" , del manual de Visual Studio, pero todavía estoy buscando otra fuente), aunque creo que este término es se usa principalmente cuando se discuten objetos. Un objeto es una instancia de una clase C si se creó a partir de un constructor definido en la clase C o en una de sus subclases.
Una variable en C ++ no es un concepto de tiempo de ejecución. Existe dentro de su compilador como un enlace léxico entre el nombre de la variable y una ubicación abstracta (mutable si no constante). Una vez que se compila un programa, las variables ya no están allí. En cambio, los datos se leen y escriben en registros, memoria, etc.
int
. El estándar C ++ no distingue entre tipos primitivos y tipos no primitivos cuando se habla de lo que hacen las declaraciones de variables. Entonces T t;
declara un objeto de tipo T
, sin importar qué tipo T
sea.
¿O la 'instancia de algo' está estrictamente relacionada con las clases y los objetos? Si es así, ¿cómo definiría el concepto de 'variable' cuando se trata de C ++?
Para decirlo de la manera más concisa posible para C ++
Solo para aclarar:
malloc()
búfer recién editado pero no inicializado: es un área de memoria que aún no es un objeto. Del mismo modo, un objeto que ha sido explícitamente destruido: es una región de memoria que ya no es un objeto.
Bueno, ¿qué significa "correcto"?
Si queremos ser muy estrictos al respecto, debemos distinguir entre:
De manera que una variable de ser una expresión sería tener un tipo. Su valor, el objeto al que se refiere, sería una instancia de alguna clase. Y tenga en cuenta que el tipo de la variable y la clase del objeto generalmente no son lo mismo: el tipo estático de la variable pone un límite superior en las clases de tiempo de ejecución de los objetos, por lo que las clases deben ser un subtipo de la clase que corresponde al tipo.
¿Quieres repetir ese gran bocado todo el tiempo? Diablos no. Cuán estrictamente vs. libremente queremos hablar depende del contexto. Muy a menudo no hay problema en decir que "la variable es una instancia de este tipo". Lo que sucede allí realmente es que estamos usando la variable y el tipo metonímicamente para referirnos al objeto y a una superclase de su clase de tiempo de ejecución.
A menos que quieras pasar toda tu vida en purismo y sofisma ... sí.
Cada vez que guarda algo que se identifica de manera única, se usa para falsificar otras cosas identificables de manera única que está creando instancias.
Algunas de esas instancias pueden tener nombres más precisos, pero en general esto funciona.
Muchas personas reservan "instancia" para instancias de clases. Si lo hace, en C ++, una variable podría ser una instancia de una clase, una referencia a una instancia, un puntero a una instancia o un tipo primitivo (es probable que cuente estructuras como clases en ese contexto, son casi completamente igual). En Java u Objective-C, las variables nunca serían instancias, sino posiblemente referencias a instancias.
Olvidó: por un corto tiempo, un puntero de C ++ puede ser un puntero a la memoria sin procesar, por ejemplo "esto" antes de que el constructor comience a ejecutarse. Es probable que todavía no llame a * this una instancia en este momento.