C++ Clase y objeto con ejemplo
โก Resumen inteligente
Clases y objetos en C++ Constituyen la base de la programaciรณn orientada a objetos, donde una clase define un modelo de datos y funciones miembro, y un objeto es una instancia concreta creada a partir de ese modelo.

ยฟQuรฉ es una clase?
A C++ La clase combina datos y mรฉtodos para manipular los datos en uno. Las clases tambiรฉn determinan las formas de los objetos. Los datos y mรฉtodos contenidos en una clase se conocen como miembros de clase. Una clase es un tipo de datos definido por el usuario. Para acceder a los miembros de la clase, usamos una instancia de la clase. Puedes ver una clase como un modelo para un objeto.
Una clase puede servir como prototipo de una casa. Muestra la ubicaciรณn y las dimensiones de puertas, ventanas, pisos, etc. A partir de estas descripciones, podemos construir una casa. La casa se convierte en el objeto. Es posible crear muchas casas a partir del prototipo. Asimismo, es posible crear muchos objetos a partir de una clase.
En la figura anterior, tenemos un prototipo de casa unifamiliar. A partir de este prototipo hemos creado dos casas con caracterรญsticas diferentes.
Teniendo en cuenta la idea de una clase como un modelo a seguir, el siguiente paso es ver cรณmo se declara en el cรณdigo.
Declaraciรณn de clase
In C++Una clase se define utilizando la palabra clave `class`. A continuaciรณn, debe ir el nombre de la clase. El cuerpo de la clase se aรฑade entre llaves `{ }`.
Sintaxis
class class-name { // data // functions };
- El nombre de la clase es el nombre que se asignarรก a la clase.
- El en son los datos de la clase, normalmente declarados como variables.
- El funciones son las funciones de clase.
Declarar el nombre y el cuerpo de la clase plantea naturalmente la cuestiรณn de quiรฉn puede usar cada miembro.
Palabras clave pรบblicas y privadas
Debes haberte encontrado con estas dos palabras clave. Son modificadores de acceso.
Privado:
Cuando la palabra clave privada se utiliza para definir una funciรณn o clase, se vuelve privada. Sรณlo se puede acceder a ellos desde dentro de la clase.
Pรบblico:
La palabra clave pรบblica, por otro lado, hace pรบblicos los datos/funciones. Estos son accesibles desde fuera de la clase.
Una vez que existe una clase, se pueden crear objetos a partir de ella, de forma muy similar a como se crean variables a partir de un tipo de dato.
Definiciรณn de objeto
Los objetos se crean a partir de clases. Los objetos de clase se declaran de forma similar a como se declaran las variables. Primero debe ir el nombre de la clase, seguido del nombre del objeto. El objeto es del tipo de clase.
Sintaxis
class-name object-name;
- El nombre de la clase es el nombre de la clase a partir de la cual se crearรก un objeto.
- El nombre-objeto es el nombre que se asignarรก al nuevo objeto.
Este proceso de creaciรณn de un objeto a partir de una clase se conoce como creaciรณn de instancias.
Una vez creado un objeto, se puede acceder a sus miembros pรบblicos directamente mediante un operador sencillo.
Acceso a miembros de datos
Para acceder a los miembros pรบblicos de una clase, utilizamos el operador (.)punto. Estos son miembros marcados con el modificador de acceso pรบblico.
Ejemplo
#include <iostream> using namespace std; class Phone { public: double cost; int slots; }; int main() { Phone Y6; Phone Y7; Y6.cost = 100.0; Y6.slots = 2; Y7.cost = 200.0; Y7.slots = 2; cout << "Cost of Huawei Y6 : " << Y6.cost << endl; cout << "Cost of Huawei Y7 : " << Y7.cost << endl; cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl; cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl; return 0; }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluya el archivo de encabezado iostream en nuestro cรณdigo para poder utilizar sus funciones.
- Incluyendo el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
- Declare una clase llamada Telรฉfono.
- Usar el modificador de acceso pรบblico para marcar las variables que estamos a punto de crear como de acceso pรบblico.
- Declarar el costo variable de un tipo de datos doble.
- Declare una variable entera llamada slots.
- Fin del cuerpo de la clase.
- Llamando a la funciรณn principal(). La lรณgica del programa debe agregarse dentro de su cuerpo.
- Cree un objeto llamado Y6 de tipo Telรฉfono. Esto se llama creaciรณn de instancias.
- Cree un objeto llamado Y7 de tipo Telรฉfono. Esto se llama creaciรณn de instancias.
- Acceda al costo variable/miembro de la clase Telรฉfono usando el objeto Y6. El valor se establece en 100.0. El coste de Y6 ahora estรก fijado en 100.0.
- Acceda a las ranuras de variables/miembros de la clase Telรฉfono usando el objeto Y6. El valor estรก establecido en 2. Las ranuras para Y6 ahora estรกn configuradas en 2.
- Acceda al costo variable/miembro de la clase Telรฉfono usando el objeto Y7. El valor se establece en 200.0. El coste de Y7 ahora estรก fijado en 200.0.
- Acceda a las ranuras de variables/miembros de la clase Telรฉfono usando el objeto Y7. El valor estรก establecido en 2. Las ranuras para Y7 ahora estรกn configuradas en 2.
- Imprime el costo de Y6 en la consola junto con otro texto.
- Imprime el costo de Y7 en la consola junto con otro texto.
- Imprima el nรบmero de ranuras para Y6 junto con otro texto.
- Imprima el nรบmero de ranuras para Y7 junto con otro texto.
- El programa debe devolver un valor al finalizar con รฉxito.
- Fin del cuerpo de la funciรณn main().
Los miembros pรบblicos tienen acceso a cรณdigo externo, pero los miembros privados siguen reglas de acceso mucho mรกs estrictas.
ยฟQuรฉ es una clase privada?
Solo se puede acceder a los miembros de la clase marcados como privados mediante funciones definidas dentro de la clase. Cualquier objeto o funciรณn definido fuera de la clase no puede acceder a dichos miembros directamente. A un miembro de una clase privada solo se accede mediante funciones de miembro y amigo.
Ejemplo
#include <iostream> using namespace std; class ClassA { public: void set_a(int val); int get_a(void); private: int a; }; int ClassA::get_a(void) { return a; } void ClassA::set_a(int val) { a = val; } int main() { ClassA a; a.set_a(20); cout << "Value of a is: " << a.get_a(); return 0; }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluya el archivo de encabezado iostream en nuestro cรณdigo para usar sus funciones.
- Incluya el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
- Crea una clase llamada ClassA.
- Utilice el modificador de acceso pรบblico para marcar el miembro de la clase que se crearรก como de acceso pรบblico.
- Cree la funciรณn denominada set_a() que toma un valor entero val.
- Cree una funciรณn llamada get_a().
- Utilice el modificador de acceso privado para marcar el miembro de la clase que se crearรก como de acceso privado.
- Declare una variable entera llamada a.
- Fin del cuerpo de la clase.
- Utilice el nombre de la clase y el operador de resoluciรณn de alcance para acceder a la funciรณn get_a(). Queremos definir quรฉ hace la funciรณn cuando se invoca.
- La funciรณn get_a() deberรญa devolver el valor de la variable a cuando se invoca.
- Fin de la definiciรณn de la funciรณn get_a().
- Utilice el nombre de la clase y el operador de resoluciรณn de alcance para acceder a la funciรณn set_a(). Queremos definir quรฉ hace la funciรณn cuando se invoca.
- Asignando el valor de la variable val a la variable a.
- Fin de la definiciรณn de la funciรณn set_a().
- Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro del cuerpo de esta funciรณn.
- Crea una instancia de ClassA y asรญgnale el nombre a.
- Utilice la instancia de clase anterior y la funciรณn set_a() para asignar un valor de 20 a la variable a.
- Imprimiendo algo de texto junto al valor de la variable a en la consola. El valor de la variable a se obtiene llamando a la funciรณn get_a().
- El programa debe devolver valor una vez completado con รฉxito.
- Fin del cuerpo de la funciรณn main().
Los miembros protegidos se sitรบan entre lo privado y lo pรบblico, lo que aรฑade una capacidad clave para la herencia.
ยฟQuรฉ es una clase protegida?
Los miembros de la clase marcados como protegidos tienen una ventaja sobre los marcados como privados. Se puede acceder a ellos mediante funciones dentro de la clase de su definiciรณn. Ademรกs, se puede acceder a ellos desde clases derivadas.
Ejemplo
#include <iostream> using namespace std; class ParentClass { protected: int value; }; class ChildClass : public ParentClass { public: void setId(int x) { value = x; } void displayValue() { cout << "Value is: " << value << endl; } }; int main() { ChildClass c; c.setId(21); c.displayValue(); return 0; }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluya el archivo de encabezado iostream en nuestro cรณdigo para usar sus funciones.
- Incluya el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
- Cree una clase llamada ParentClass.
- Utilice el modificador de acceso protegido para marcar el miembro de la clase que se crearรก como protegido.
- Cree una variable entera llamada valor.
- Fin del cuerpo de la clase.
- Cree una nueva clase llamada ChildClass que herede ParentClass.
- Utilice el modificador de acceso protegido para marcar el miembro de la clase que se crearรก como accesible para las clases secundarias.
- Cree la funciรณn denominada setId() que toma un valor entero x.
- Asignar el valor de la variable x al valor de la variable.
- Fin de la definiciรณn de la funciรณn setId().
- Cree una funciรณn llamada displayValue().
- Imprima el valor de la variable denominada valor en la consola junto con otro texto.
- Fin del cuerpo de la funciรณn displayValue().
- Fin del cuerpo de la clase denominada ChildClass.
- Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro del cuerpo de esta funciรณn.
- Cree una instancia de ChildClass y asรญgnele el nombre c.
- Utilice la instancia de clase anterior y la funciรณn setId() para asignar un valor de 21 a la variable x.
- Utilice la instancia de clase anterior para llamar a la funciรณn denominada displayValue().
- El programa debe devolver valor una vez completado con รฉxito.
- Fin del cuerpo de la funciรณn main().
Ademรกs de almacenar datos, una clase tambiรฉn agrupa las funciones que operan sobre esos datos.
Funciones de los miembros de la clase
Las funciones nos ayudan a manipular datos. Las funciones de los miembros de la clase se pueden definir de dos maneras:
- Dentro de la definiciรณn de clase
- Fuera de la definiciรณn de clase
Si se debe definir una funciรณn fuera de una definiciรณn de clase, debemos utilizar el operador de resoluciรณn de รกmbito (::). Este debe ir acompaรฑado de los nombres de la clase y la funciรณn.
Ejemplo
#include <iostream> #include <string> using namespace std; class Guru99 { public: string tutorial_name; int id; void printname(); void printid() { cout << "Tutorial id is: "<< id; } }; void Guru99::printname() { cout << "Tutorial name is: " << tutorial_name; } int main() { Guru99 guru99; guru99.tutorial_name = "C++"; guru99.id = 1001; guru99.printname(); cout << endl; guru99.printid(); return 0; }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluya el archivo de encabezado iostream en nuestro programa para usar sus funciones.
- Incluya el archivo de encabezado de cadena en nuestro programa para usar sus funciones.
- Incluya el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
- Crea una clase llamada Guru99.
- Utilice el modificador de acceso pรบblico para marcar como accesibles pรบblicamente a los miembros de la clase que estamos a punto de crear.
- Cree una variable de cadena denominada nombre_tutorial.
- Cree una variable entera llamada id.
- Cree una funciรณn llamada printname(). Esta funciรณn no estรก definida dentro de la definiciรณn de clase.
- Crea una funciรณn llamada printid(). Esta funciรณn se define dentro de la definiciรณn de la clase. Su cuerpo se ha aรฑadido dentro de la definiciรณn de la clase.
- Imprima el valor de la identificaciรณn de la variable junto con otro texto en la consola. Tenga en cuenta que esto se ha agregado dentro del cuerpo de la funciรณn printid(). Solo se ejecutarรก cuando se llame a la funciรณn printid().
- Fin del cuerpo de la funciรณn printid().
- Fin del cuerpo de la clase Guru99.
- El inicio de la definiciรณn de la funciรณn printname().
- Imprima el valor de la variable nombre_tutorial en la consola junto con otro texto. Tenga en cuenta que esto se ha agregado dentro del cuerpo de la funciรณn printname(). Solo se ejecutarรก cuando se llame a la funciรณn printname().
- Fin de la definiciรณn de la funciรณn printname().
- Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro del cuerpo de esta funciรณn.
- Crea una instancia de la clase Guru99 y dรกndole el nombre de guru99.
- Utilice la instancia anterior para asignar un valor de C++ a la variable nombre_tutorial.
- Utilice la instancia de guru99 para asignar un valor de 1001 a la identificaciรณn de la variable.
- Utilice la instancia guru99 para llamar a la funciรณn printname() .
- Llame al comando de fin (final de lรญnea) para imprimir una nueva lรญnea en blanco en la consola.
- Utilice la instancia guru99 para llamar a la funciรณn printid().
- El programa debe devolver valor una vez completado con รฉxito.
- Fin del cuerpo de la funciรณn main().
Dos funciones miembro especiales se ejecutan automรกticamente cuando se crea un objeto y cuando se destruye.
Constructores y Destructores
ยฟQuรฉ es un Constructor?
Los constructores son funciones especiales que inicializan objetos. C++ compiladores Se llama a un constructor al crear un objeto. Los constructores ayudan a asignar valores a los miembros de la clase. Por supuesto, esto ocurre despuรฉs de que se les haya asignado un espacio de memoria.
ยฟQuรฉ es un destructor?
Los destructores, por otro lado, ayudan a destruir objetos de clase.
El nombre del constructor debe ser similar al nombre de la clase. Los constructores no tienen un tipo de devoluciรณn.
El constructor se puede definir dentro o fuera del cuerpo de la clase. Si se define fuera del cuerpo de la clase, se debe definir con el nombre de la clase y el operador de resoluciรณn de alcance (::).
Ejemplo
#include <iostream> using namespace std; class ClassA { public: ClassA() { cout << "Class constructor called"<<endl; } ~ClassA() { cout << "Class destructor called"<<endl; } }; int main() { ClassA a; int p = 1; if (p) { ClassA b; } }
Salida:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluya el archivo de encabezado iostream en el cรณdigo para usar sus funciones.
- Incluya el espacio de nombres estรกndar en nuestro cรณdigo para usar sus clases sin llamarlo.
- Crea una clase llamada ClassA.
- Utilice el modificador de acceso pรบblico para marcar el miembro que estamos a punto de crear como de acceso pรบblico.
- Crea un constructor para la clase.
- Texto para imprimir en la consola cuando se llama al constructor. El final es un C++ palabra clave, que significa lรญnea final. Mueve el cursor del mouse a la siguiente lรญnea.
- Fin del cuerpo del constructor de clase.
- Crea un destructor para la clase.
- Texto que se imprimirรก en la consola cuando se llame al destructor. El final es un C++ palabra clave, que significa lรญnea final. Mueve el cursor del mouse a la siguiente lรญnea.
- Fin del cuerpo del destructor.
- Fin del cuerpo de la clase.
- Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro del cuerpo de esta funciรณn.
- Crea un objeto de clase y asรญgnale el nombre a. Se llamarรก al constructor.
- Cree una variable entera llamada p y asรญgnele un valor de 1.
- Cree un bloque de declaraciรณn if usando la variable p.
- Crea un objeto de clase y dale el nombre b. Se llamarรก al destructor.
- Fin del cuerpo de la declaraciรณn if.
- Fin del cuerpo de la funciรณn main().








