Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


4.1.1 Entidades

§1  Presentación

En relación con los conceptos que aquí nos incumben, consideramos que una entidad ( 1.2.1) a la que corresponde una zona de almacenamiento, es un objeto, y que el contenido de esta zona de memoria puede ser de dos tipos:

  • Un valor (o conjunto de valores) fijo o variable.  Lo denominamos entidad-valor u objeto-valor.
  • Un algoritmo con información sobre manipulación de datos. Lo denominamos entidad-algoritmo o simplemente algoritmo.

Respecto a los objetos-valor, una posible clasificación podría dividirlos en las siguientes categorías:

  • Agregados
    • matriz
    • estructura
    • unión
    • clase, unión.
  • Funciones
  • Escalares
    • Aritmético
    • Enumeración
    • Booleano
    • Puntero
    • Referencia
  • void


void ( 2.2.1) es un tipo especial con un valor muy particular: "ausencia de valor".  Los escalares son de características tales que su "valor" no pueden ser descompuestos en partes más pequeñas, por ejemplo, un entero; un valor lógico (cierto-falso), etc.   Las funciones ( 4.4) son principalmente algoritmo, ya que están asociadas a ciertas operaciones (cierta computación), pero por convención se les puede asignar un "valor", es el que devuelven (puede ser void).  Por su parte los agregados comparten la característica de que su "valor" puede ser descompuesto en elementos más simples (escalares).

§2  El papel de las declaraciones

Haciendo un símil social, podríamos decir que las declaraciones son las encargadas de "presentar" al compilador cualquier entidad que deba existir en el programa.  Son por tanto, el Chambelán de la sociedad C++.  Como en el caso de las presentaciones sociales, esta presentación no se reduce a indicar el nombre;  también puede señalarse algunas características o atributos de la entidad.  Naturalmente estos atributos no pueden ser los mismos en todos los casos (los objetos no tienen los mismos que las funciones) aunque desde luego todos tienen un identificador.

§3  Atributos

Todas las declaraciones de entidades contienen un identificador asociado que se utiliza para acceder al objeto. Puede ser un identificador simple (nombre), o  una expresión compleja que represente unívocamente al objeto ( 2.1.1 ).  Cualquier intento de utilizar una declaración sin un nombre es un error, aunque el nombre no tiene que responder necesariamente a un objeto o función.  Ejemplo:

extern int;                   // Error!!

char*;                        // Error!!

char* cptr;                   // Ok. cptr nombre de puntero

class C;                      // Ok. C nombre de clase

typedef unsigned int UINT;    // Ok. UINT alias para un tipo conocido


Además del identificador, las declaraciones de funciones pueden incluir ciertos atributos: inline ( 4.11.2a);  virtual ( 4.11.8a) y explicit ( 4.11.2d1).

Por su parte, las declaraciones de  objetos-valor pueden incluir atributos de diversos tipos [1]:

  • Relativos al tipo de objeto:  Su mero conocimiento ya anuncia al compilador algunas propiedades y operaciones que se pueden ejecutar con el objeto ( 2.1 ).  Entre otros puede incluir los siguientes:  char,   wchar_t,   bool,   short,   int,   long,   signed,   unsigned,   floatdouble,   void.

  • Relativos al tipo de almacenamiento.  Determina el sitio en que se guarda el objeto y su duración ( 2.1.3 ).  Puede ser alguno de los siguientes:  autoregisterstatic,   externmutable.

  • Relativos al tipo de enlazado:  extern.

  • Relativos a propiedades diversas:  friendtypedefasm.

  • Relativo a su variabilidad (capacidad de que el "valor" pueda o no cambiar a lo largo del programa): const.

Nota:  observe que los atributos identificador y almacenamiento son distintos, lo que permite establecer una interesante disquisición respecto a si un mismo objeto. Por ejemplo una variable, puede estar referenciado por dos identificadores distintos (que se refieren a la misma región de memoria). En la mayoría de lenguajes de programación esta distinción, entre identificador y almacenamiento, está perfectamente establecida, y suelen proporcionar mecanismos sintácticos para que dos identificadores puedan referirse al mismo almacenamiento.


  Inicio.


[1]   La presente clasificación es meramente orientativa;  no pretende ser una clasificación exhaustiva de los atributos de las entidades C++ (para mayor detalle debe consultarse la gramática Gramática).