in

Clases y objetos de C ++ – GeeksforGeeks

gfg 200x200 min

Clase: Una clase en C ++ es el bloque de construcción que conduce a la programación orientada a objetos. Es un tipo de datos definido por el usuario, que contiene sus propios miembros de datos y funciones de miembros, a los que se puede acceder y utilizar creando una instancia de esa clase. Una clase de C ++ es como un modelo para un objeto.
Por ejemplo: considere la clase de Carros. Puede haber muchos autos con diferentes nombres y marcas, pero todos compartirán algunas propiedades comunes, como todos ellos tendrán. 4 ruedas, Límite de velocidad, Rango de kilometraje etc. Así que aquí, el coche es la clase y las ruedas, los límites de velocidad, el kilometraje son sus propiedades.

  • Una clase es un tipo de datos definido por el usuario que tiene miembros de datos y funciones de miembro.
  • Los miembros de datos son las variables de datos y las funciones de miembro son las funciones que se utilizan para manipular estas variables y, en conjunto, estos miembros de datos y las funciones de miembro definen las propiedades y el comportamiento de los objetos en una clase.
  • En el ejemplo anterior de clase Coche, el miembro de datos será Límite de velocidad, kilometraje etc y las funciones de los miembros pueden ser aplicar frenos, aumentar la velocidad etc.

Un Objeto es una instancia de una clase. Cuando se define una clase, no se asigna memoria, pero cuando se instancia (es decir, se crea un objeto) se asigna memoria.

Definición de clase y declaración de objetos

Una clase se define en C ++ usando la palabra clave class seguida del nombre de la clase. El cuerpo de la clase se define dentro de las llaves y termina con un punto y coma al final.clases-y-objetos-en-c

Declaración de objetos: Cuando se define una clase, solo se define la especificación del objeto; no se asigna memoria ni almacenamiento. Para utilizar los datos y las funciones de acceso definidas en la clase, necesita crear objetos.

Sintaxis:

ClassName ObjectName;

Acceso a miembros de datos y funciones de miembros: Se puede acceder a los miembros de datos y las funciones de miembros de la clase usando el operador de punto (‘.’) Con el objeto. Por ejemplo, si el nombre del objeto es obj y desea acceder a la función de miembro con el nombre printName () entonces tendrás que escribir obj.printName () .

Acceso a miembros de datos

También se accede a los miembros de datos públicos de la misma manera, dado que, sin embargo, el objeto no puede acceder directamente a los miembros de datos privados. El acceso a un miembro de datos depende únicamente del control de acceso de ese miembro de datos.
Este control de acceso lo proporcionan los modificadores de acceso en C ++. Hay tres modificadores de acceso: público, privado y protegido.

#include <bits/stdc++.h>

using namespace std;

class Geeks

{

    

    public:

    

    string geekname;

    

    void printname()

    {

       cout << "Geekname is: " << geekname;

    }

};

int main() {

    

    Geeks obj1;

    

    obj1.geekname = "Abhi";

    

    obj1.printname();

    return 0;

}

Producción:

Geekname is: Abhi

Funciones de los miembros en clases

Hay 2 formas de definir una función miembro:

  • Definición de clase interna
  • Definición de clase externa

Para definir una función miembro fuera de la definición de clase, tenemos que usar el operador scope resolution :: junto con el nombre de la clase y el nombre de la función.

#include <bits/stdc++.h>

using namespace std;

class Geeks

{

    public:

    string geekname;

    int id;

    

    

    void printname();

    

    

    void printid()

    {

        cout << "Geek id is: " << id;

    }

};

void Geeks::printname()

{

    cout << "Geekname is: " << geekname;

}

int main() {

    

    Geeks obj1;

    obj1.geekname = "xyz";

    obj1.id=15;

    

    

    obj1.printname();

    cout << endl;

    

    

    obj1.printid();

    return 0;

}

Producción:

Geekname is: xyz
Geek id is: 15

Tenga en cuenta que todas las funciones miembro definidas dentro de la definición de clase son por defecto en línea, pero también puede hacer cualquier función que no sea de clase en línea usando palabras clave en línea con ellos. Las funciones en línea son funciones reales, que se copian en todas partes durante la compilación, como la macro de preprocesador, por lo que se reduce la sobrecarga de la llamada de función.

Nota: Declarar una función de amigo es una forma de otorgar acceso privado a una función que no es miembro.

Constructores

Los constructores son miembros de clases especiales a los que el compilador llama cada vez que se crea una instancia de un objeto de esa clase. Los constructores tienen el mismo nombre que la clase y pueden definirse dentro o fuera de la definición de la clase.
Hay 3 tipos de constructores:

#include <bits/stdc++.h>

using namespace std;

class Geeks

{

    public:

    int id;

    

    

    Geeks()

    {

        cout << "Default Constructor called" << endl;

        id=-1;

    }

    

    

    Geeks(int x)

    {

        cout << "Parameterized Constructor called" << endl;

        id=x;

    }

};

int main() {

    

    

    Geeks obj1;

    cout << "Geek id is: " <<obj1.id << endl;

    

    

    Geeks obj2(21);

    cout << "Geek id is: " <<obj2.id << endl;

    return 0;

}

Producción:

Default Constructor called
Geek id is: -1
Parameterized Constructor called
Geek id is: 21

A Copiar constructor crea un nuevo objeto, que es una copia exacta del objeto existente. El compilador proporciona un constructor de copia predeterminado para todas las clases.
Sintaxis:

class-name (class-name &){}

Destructores

Destructor es otra función miembro especial a la que llama el compilador cuando finaliza el alcance del objeto.

#include <bits/stdc++.h>

using namespace std;

class Geeks

{

    public:

    int id;

    

    

    ~Geeks()

    {

        cout << "Destructor called for id: " << id <<endl;

    }

};

int main()

  {

    Geeks obj1;

    obj1.id=7;

    int i = 0;

    while ( i < 5 )

    {

        Geeks obj2;

        obj2.id=i;

        i++;       

    }

    return 0;

  }

Producción:

Destructor called for id: 0
Destructor called for id: 1
Destructor called for id: 2
Destructor called for id: 3
Destructor called for id: 4
Destructor called for id: 7

Destructor virtual puro

Artículos relacionados:

Este artículo es una contribución de Abhirav Kariya. Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema discutido anteriormente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

apple touch icon@2

c # – Regex que acepta solo números (0-9) y NO caracteres

180px Diffusion.svg

Difusión y ósmosis: diferencia y comparación