Clases de tipos de C++
Todos
los lenguajes de programación tienen un sistema más o menos complejo de
clasificación de los objetos en base a una característica denominada "tipo".
La característica distintiva de cada tipo viene determinada por las operaciones
que pueden efectuarse con sus integrantes; lo cual es bastante natural e
intuitivo.
Aunque
las cuestiones de clasificación suelen ser un tanto artificiosas, dependiendo
de la característica distintiva que se aplique, los tipos de datos C++
pueden clasificarse como sigue:
Tipos básicos
También llamados fundamentales, primitivos y
escalares. No tienen "descomposición", están predefinidos en
el lenguaje. Su álgebra, es decir, las operaciones que les son permitidas,
también están preconstruidas en el lenguaje, que dispone así mismo de
constructores y destructores por defecto para ellos.
Su clasificación es la siguiente:
·
Asimilables a enteros
o carácter
(char)
o entero
(int)
o booleano
(bool)
o enumeraciones
(enum)
o punteros
(no tienen una palabra clave específica, sino un símbolo , -calificador de tipo-)
·
Fraccionarios (float, double)
·
Ausencia de dato (void)
Tipos extendidos
Son "adaptaciones" de detalle sobre
los tipos básicos para mejor adaptarse a necesidades específicas.
·
largo (long)
·
corto (short)
·
con signo (signed)
·
sin signo (unsigned)
Los enteros y fraccionarios (en todas sus
variaciones long, signed, etc) se conocen
colectivamente como tipos numéricos
Tipos compuestos
Aparte de los anteriores, C++ soporta tipos compuestos
(también denominados tipos-clase). Son compuestos o agregados de tipos básicos,
por esta razón se les denomina también tipos agregados o abstractos ADTs
("Abstract data types"). El "material" de que están
compuestos son los tipos básicos, bien en estado "puro" o en sus
diversas "adaptaciones". El proceso es recursivo, de forma que un
tipo complejo puede contener miembros que son a su vez tipos complejos y así
sucesivamente.
Desde el punto de vista semántico la
gramática C++ establece como tipos compuestos ("Compound types") los
siguientes:
·
Matrices de objetos de cualquier tipo.
·
Funciones, que aceptan parámetros de ciertos
tipos y devuelven void u objetos (o referencias a objetos) de
cierto tipo.
·
Punteros a-void; punteros
a-objetos, o punteros a-función (incluyendo miembros estáticos de clases) de un
tipo determinado.
·
Punteros a miembros no-estáticos de clases
(que señalan miembros de un tipo determinado dentro de objetos de una clase
determinada.
·
Referencias a objetos o funciones de un tipo
determinado.
·
Clases.
·
Uniones.
·
Enumeraciones
No hay comentarios.:
Publicar un comentario