2.2.2 Tipos derivados
§1 Sinopsis
Aparte
de los tipos básicos (
2.2.1) y sus variantes, C++ soporta otros tipos de
naturaleza compleja que derivan de aquellos. Dicho en otras
palabras: C++ permite al usuario construir otros tipos a partir de los básicos. De estos "nuevos" tipos, los de nivel de
abstracción más alto son las clases (
4.11), incluyendo sus formas particulares (estructuras
y uniones); también pueden crearse campos
de bits; matrices y una
familia de tipos muy importante: los punteros.
Hay punteros a cada uno de los demás tipos: a carácter, a entero, a
estructura, a función, a puntero, etc. (
4.2).
Los tipos derivados se construyen con palabras clave: class, struct, unión u operadores especiales como los siguientes:
- * puntero a
- *const puntero constante a
- & referencia a
- [ ] array[1] de
- ( ) retorno de función
Ejemplos: suponiendo
que tipoX un tipo básico o variante (no void
2.2.1),
pueden declararse tipos
derivados tal como se muestra:
tipoX t; // t es un objeto de tipo tipoX
tipoX arr[10]; // arr es una matriz de diez elementos tipoX
tipoX *ptr; // ptr es un puntero a tipoX
tipoX &ref=t; // ref es una referencia a tipoX
tipoX func(void); // func devuelve un valor tipoX (no acepta parámetros)
void func(tipoX t); // func1 acepta un parámetro t tipoX (no devuelve nada)
struct st {tipoX t1; tipoX t2}; // la estructura st alberga dos tipoX
Nota: Las expresiones: tipo& var, tipo &var y tipo & var son equivalentes.
[1] El original inglés, "array", significa arreglo, orden; en informática tiene el sentido de vector, matriz. A veces, en lo sucesivo usaremos el original inglés.