Clases y objetos de C ++

El propósito principal de la programación C ++ es agregar orientación a objetos al lenguaje de programación C y las clases son la característica central de C ++ que admite la programación orientada a objetos y, a menudo, se denominan tipos definidos por el usuario.

Una clase se usa para especificar la forma de un objeto y combina la representación de datos y métodos para manipular esos datos en un paquete ordenado. Los datos y funciones dentro de una clase se denominan miembros de la clase.

Definiciones de clases de C ++

Cuando define una clase, define un plano para un tipo de datos. Esto en realidad no define ningún dato, pero define lo que significa el nombre de la clase, es decir, en qué consistirá un objeto de la clase y qué operaciones se pueden realizar en dicho objeto.

Una definición de clase comienza con la palabra clave classseguido del nombre de la clase; y el cuerpo de la clase, encerrado por un par de llaves. Una definición de clase debe ir seguida de un punto y coma o de una lista de declaraciones. Por ejemplo, definimos el tipo de datos Box usando la palabra claveclass como sigue -

class Box {
   public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
};

La palabra clave publicdetermina los atributos de acceso de los miembros de la clase que le sigue. Se puede acceder a un miembro público desde fuera de la clase en cualquier lugar dentro del alcance del objeto de la clase. También puede especificar los miembros de una clase comoprivate o protected que discutiremos en una subsección.

Definir objetos C ++

Una clase proporciona los planos de los objetos, por lo que básicamente un objeto se crea a partir de una clase. Declaramos objetos de una clase con exactamente el mismo tipo de declaración que declaramos variables de tipos básicos. Las siguientes declaraciones declaran dos objetos de la clase Box:

Box Box1;          // Declare Box1 of type Box
Box Box2;          // Declare Box2 of type Box

Ambos objetos Box1 y Box2 tendrán su propia copia de miembros de datos.

Acceso a los miembros de datos

Se puede acceder a los miembros de datos públicos de los objetos de una clase mediante el operador de acceso directo a miembros (.). Probemos con el siguiente ejemplo para aclarar las cosas:

#include <iostream>

using namespace std;

class Box {
   public:
      double length;   // Length of a box
      double breadth;  // Breadth of a box
      double height;   // Height of a box
};

int main() {
   Box Box1;        // Declare Box1 of type Box
   Box Box2;        // Declare Box2 of type Box
   double volume = 0.0;     // Store the volume of a box here
 
   // box 1 specification
   Box1.height = 5.0; 
   Box1.length = 6.0; 
   Box1.breadth = 7.0;

   // box 2 specification
   Box2.height = 10.0;
   Box2.length = 12.0;
   Box2.breadth = 13.0;
   
   // volume of box 1
   volume = Box1.height * Box1.length * Box1.breadth;
   cout << "Volume of Box1 : " << volume <<endl;

   // volume of box 2
   volume = Box2.height * Box2.length * Box2.breadth;
   cout << "Volume of Box2 : " << volume <<endl;
   return 0;
}

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

Volume of Box1 : 210
Volume of Box2 : 1560

Es importante tener en cuenta que no se puede acceder directamente a los miembros privados y protegidos mediante el operador de acceso directo de miembros (.). Aprenderemos cómo se puede acceder a miembros privados y protegidos.

Clases y objetos en detalle

Hasta ahora, tiene una idea muy básica sobre las clases y objetos de C ++. Hay más conceptos interesantes relacionados con las clases y objetos de C ++ que discutiremos en varias subsecciones que se enumeran a continuación:

No Señor Concepto y descripción
1 Funciones de los miembros de la clase

Una función miembro de una clase es una función que tiene su definición o su prototipo dentro de la definición de la clase como cualquier otra variable.

2 Modificadores de acceso a clases

Un miembro de la clase puede definirse como público, privado o protegido. Por defecto, los miembros se asumirán como privados.

3 Constructor y destructor

Un constructor de clase es una función especial en una clase que se llama cuando se crea un nuevo objeto de la clase. Un destructor también es una función especial que se llama cuando se elimina el objeto creado.

4 Copiar constructor

El constructor de copia es un constructor que crea un objeto inicializándolo con un objeto de la misma clase, que ha sido creado previamente.

5 Funciones de amigo

UNA friend A la función se le permite acceso completo a miembros privados y protegidos de una clase.

6 Funciones en línea

Con una función en línea, el compilador intenta expandir el código en el cuerpo de la función en lugar de una llamada a la función.

7 este puntero

Cada objeto tiene un puntero especial this que apunta al objeto en sí.

8 Puntero a clases de C ++

Un puntero a una clase se hace exactamente de la misma manera que un puntero a una estructura. De hecho, una clase es en realidad solo una estructura con funciones en ella.

9 Miembros estáticos de una clase

Tanto los miembros de datos como los miembros de función de una clase se pueden declarar como estáticos.