Ahora que ya se ha visto y discutido un ejemplo incial es hora
de retroceder para definir la terminología. El acto de
introducir funciones en las estructuras es el eje central del
cambio que C++ propone sobre C, e eso introduce una nueva forma
de ver las estructuras: como conceptos. En C, una estructura
(struct
) es tan sólo una agrupación de datos: una
manera de empaquetar datos para que se puedan tratar como un
grupo. De esta forma, cuesta hacerse a la idea de que
representan algo más que una mera conveniencia de programación.
Las funciones que operan sobre esas estructuras están sueltas
por ahí. Sin embargo, con las funciones dentro del mismo paquete
que los datos, la estructura se convierte en una nueva criatura,
capaz de representar las características (como hacen
las struct
s de C) y los
comportamientos. El concepto de objeto, una entidad
independiente y bien limitada que puede
recordar y actuar, se sugiere a si mismo
como definición.
En C++, un objeto es simplemente una variable, y la definición más purista es «una región de almacenamiento» (que es una forma más específica para decir «un objeto debe tener un único identificador» el cual, en el caso de C++, es una dirección única de memoria). Es un lugar en el cual se pueden almacenar datos y eso implica también operaciones que pueden actuar sobre esos datos.
Desafortunadamente no existe una consistencia completa entre los distintos lenguajes cuando se habla de estos términos, aunque son aceptados bastante bien. También se podrán encontrar discrepancias sobre lo que es un lenguaje orientado a objetos, aunque parece haber un consenso razonable hoy en día. Hay lenguajes basados en objetos, que cuentan con estructuras-con-funciones como las que ha visto aquí de C++. Sin embargo, esto es tan sólo una parte de lo que denomina un lenguaje orientado a objetos, y los lenguajes que solamente llegan a empaquetar las funciones dentro de las estructuras son lenguajes basados en objetos y no orientados a objetos.