Está en la página 1de 3

Sistema de tipos de C++ (C++ moderno)

El concepto de tipo es muy importante en C++. Cada variable, argumento de funcin y valor devuelto
por una funcin debe tener un tipo para compilarse. Asimismo, antes de evaluar cada una de las
expresiones (incluidos los valores literales), el compilador da implcitamente un tipo a estas
expresiones. Algunos ejemplos de tipos son int, que almacena valores integrales, double, que
almacena valores de punto flotante (tambin conocidos como tipos de datos escalares) o la
clase std::basic_string de la biblioteca estndar, que almacena texto. Puede crear su propio tipo
definiendo un objeto class o struct. El tipo especifica la cantidad de memoria que se asignar para
la variable (o el resultado de la expresin), las clases de valores que se pueden almacenar en esa
variable, cmo se interpretan estos valores (como patrones de bits) y las operaciones que se pueden
realizar en ella. Este artculo contiene informacin general sobre las principales caractersticas del
sistema de tipos de C++.

Terminologa
Variable: nombre simblico de una cantidad de datos. Este nombre se puede utilizar para acceder a
los datos a los que hace referencia en el mbito del cdigo en el que se define. En C++, el trmino
variable se utiliza normalmente para hacer referencia a las instancias de tipos de datos escalares,
mientras que las instancias de otros tipos normalmente se denominan objetos.
Objeto: por simplicidad y coherencia, en este artculo se utiliza el trmino objeto para hacer
referencia a cualquier instancia de una clase o estructura. Cuando se utiliza en sentido general, incluye
todos los tipos, incluso las variables escalares.
Tipo POD (datos estndar): esta categora informal de tipos de datos de C++ hace referencia a los
tipos que son escalares (vea la seccin de tipos fundamentales) o que son clases POD. Una clase POD
no tiene ningn miembro de datos esttico que no sea tambin POD, y no tiene ningn constructor
definido por el usuario, ningn destructor definido por el usuario ni ningn operador de asignacin
definido por el usuario. Adems, las clases POD no tienen funciones virtuales, clases base ni ningn
miembro de datos no esttico privado o protegido. Los tipos POD suelen utilizarse para el intercambio
de datos externos, por ejemplo, con un mdulo escrito en lenguaje C (que solo tiene tipos POD).

El concepto de tipo es muy importante en C++. Cada variable, argumento de funcin y valor
devuelto por una funcin debe tener un tipo para compilarse. Asimismo, antes de evaluar cada una
de las expresiones (incluidos los valores literales), el compilador da implcitamente un tipo a estas
expresiones. Algunos ejemplos de tipos son int, que almacena valores integrales, double, que
almacena valores de punto flotante (tambin conocidos como tipos de datos escalares) o la
clase std::basic_string de la biblioteca estndar, que almacena texto. Puede crear su propio tipo
definiendo un objeto class o struct. El tipo especifica la cantidad de memoria que se asignar para
la variable (o el resultado de la expresin), las clases de valores que se pueden almacenar en esa
variable, cmo se interpretan estos valores (como patrones de bits) y las operaciones que se pueden
realizar en ella. Este artculo contiene informacin general sobre las principales caractersticas del
sistema de tipos de C++.
Terminologa
Variable: nombre simblico de una cantidad de datos. Este nombre se puede utilizar para acceder a
los datos a los que hace referencia en el mbito del cdigo en el que se define. En C++, el trmino
variable se utiliza normalmente para hacer referencia a las instancias de tipos de datos escalares,
mientras que las instancias de otros tipos normalmente se denominan objetos.
Objeto: por simplicidad y coherencia, en este artculo se utiliza el trmino objeto para hacer
referencia a cualquier instancia de una clase o estructura. Cuando se utiliza en sentido general,
incluye todos los tipos, incluso las variables escalares.
Tipo POD (datos estndar): esta categora informal de tipos de datos de C++ hace referencia a los
tipos que son escalares (vea la seccin de tipos fundamentales) o que son clases POD. Una clase
POD no tiene ningn miembro de datos esttico que no sea tambin POD, y no tiene ningn
constructor definido por el usuario, ningn destructor definido por el usuario ni ningn operador de
asignacin definido por el usuario. Adems, las clases POD no tienen funciones virtuales, clases base
ni ningn miembro de datos no esttico privado o protegido. Los tipos POD suelen utilizarse para el
intercambio de datos externos, por ejemplo, con un mdulo escrito en lenguaje C (que solo tiene
tipos POD).

Especificar tipos de variable y funcin C++ es un lenguaje fuertemente tipado y que, adems,
contiene tipos estticos.
Cada objeto tiene un tipo y ese tipo nunca cambia (no debe confundirse con los objetos de datos
estticos).
Al declarar una variable en el cdigo, debe especificar explcitamente su tipo o utilizar la palabra
clave auto para indicar al compilador que deduzca el tipo desde el inicializador.
Al declarar una funcin en el cdigo, debe especificar el tipo de cada argumento y su valor devuelto
(o void, si la funcin no devuelve ningn valor). La excepcin se produce cuando se utilizan plantillas
de funcin, que estn permitidas en los argumentos de tipos arbitrarios.
Una vez que se declara por primera vez una variable, no se puede cambiar su tipo. Sin embargo, el
valor de la variable o el valor devuelto por una funcin se puede copiar en otra variable de distinto
tipo. Este tipo de operaciones se denominan conversiones de tipo. Estas conversiones a veces
resultan necesarias, aunque tambin pueden producir errores o prdidas de datos.
Cuando se declara una variable de tipo POD, se recomienda encarecidamente iniciarla, lo que significa
darle un valor inicial. Una variable, hasta que se inicializa, tiene el valor "no utilizado", que se compone
de los bits que estaban previamente en esa ubicacin de memoria. Este es un aspecto importante de
C++ que debe recordarse, sobre todo si anteriormente utilizaba otro lenguaje que controlaba la
inicializacin sin su intervencin. Cuando se declara una variable de un tipo que pertenece una clase
que no es POD, el constructor controla la inicializacin.
En el ejemplo siguiente se muestran algunas sencillas declaraciones de variable con descripciones de
cada una de ellas. En el ejemplo se muestra tambin cmo el compilador utiliza la informacin de
tipo para permitir o no permitir que posteriormente se realicen ciertas operaciones en la variable.

int result = 0; // Declare and initialize an integer.


double coefficient = 10.8; // Declare and initialize a floating
// point value.
auto name = "Lady G."; // Declare a variable and let compiler
// deduce the type.
auto address; // error. Compiler cannot deduce a type
// without an intializing value.
age = 12; // error. Variable declaration must
// specify a type or use auto!
result = "Kenny G."; // error. Cant assign text to an int.
string result = "zero"; // error. Cant redefine a variable with
// new type.
int maxValue; // Not recommended! maxValue contains
// garbage bits until it is initialized.

Tipos (integrados) fundamentales


A diferencia de algunos lenguajes, C++ no tiene un tipo base universal del que se deriven todos los
dems tipos. La implementacin del lenguaje en Visual C++ contiene muchos tipos fundamentales,
tambin conocidos como tipos integrados.
Esto incluye los tipos numricos, como int, double, long y bool, adems de los
tipos char y wchar_t para los caracteres ASCII y Unicode, respectivamente. La mayora de los tipos
fundamentales (excepto bool, double, wchar_t y tipos relacionados) tienen versiones sin signo, que
modifican el intervalo de valores que la variable puede almacenar. Por ejemplo, un valor int, que
almacena un entero de 32 bits con signo, puede representar un valor comprendido entre -
2.147.483.648 y 2.147.483.647. Un valor unsigned int, que tambin se almacena como 32 bits, puede
almacenar un valor comprendido entre 0 y 4.294.967.295. El nmero total de valores posibles en cada
caso es el mismo; solo cambia el intervalo.
El compilador reconoce los tipos fundamentales y tiene reglas integradas que rigen las operaciones
que se pueden realizar en esos tipos y cmo se pueden convertir en otros tipos fundamentales. Para
obtener una lista completa de los tipos integrados y sus lmites de tamao y numricos.

En la ilustracin siguiente se muestran los tamaos relativos de los tipos integrados:

También podría gustarte