Los miembros y métodos de una clase pueden declararse estáticos anteponiendo la palabra “static”
OTROS CONCEPTOS. Un dato declarado estático en una clase es un dato de una sola instancia, se crea al definir la clase y sólo existirá uno, independientemente del número de objetos que se creen. Esto es bueno cuando todos los objetos van a compartir una misma variable. Para inicializar la variable, lo que haremos será preceder a la variable del nombre de la clase.
class Clase
{
static int Dato;
.....
};
int Clase::Dato=ValorInicial; //Inicialización de la
// variable estática
En cuanto a los métodos declarados como estáticos, debemos decir que no han de estar relacionados con objeto alguno de dicha clase. Un método estático no puede ser nunca virtual.
El modificador “const”
Un miembro declarado con const, no puede sufrir modificaciones, tan sólo una inicialización en el momento en que se crea. También un miembro de una clase puede declararse constante, impidiendo que cualquier otro método que no sea el constructor y el destructor lo trate. Ni siquiera el constructor puede asignar un valor al campo directamente, sino que tendrá que llamar al constructor del miembro que se va a inicializar. Sin embargo, si queremos que algunos métodos puedan hacer uso de estos miembros, lo que hacemos es poner detrás el modificador
const
#include <iostream.h>
class Clase
{ const int Objeto; // Un miembro const privado
public:
Clase(int N=0) : Objeto(N){ }// Inicializa el
// objeto
// El método Imprime es capaz de manejar objeto const
void Imprime(void)
const { const cout << Objeto;}
};
void main(void)
{ const Clase X(15); // Un objeto const de valor inicial 15
X.Imprime();
}
El Objeto “this”
Permite acceder al objeto actual cuyo comportamiento se está definiendo. Es un apuntador a una clase usado dentro de cualquier método de dicha clase, por ejemplo:
this->Imprime().
Problemas de Ámbito
Es bastante normal crear dentro de una clase tipos enumerados o estructuras. En el caso de los tipos enumerados podemos acceder a sus elementos por medio del nombre de la clase y el operador de resolución de ámbito. Aunque también por medio de un objeto perteneciente a la clase se puede hacer, esta notación no se suele usar. En cambio, en el caso de las estructuras el acceso a los datos siempre hay que hacerlo a través de un objeto de la clase. Si tenemos privados los elementos de una enumeración entonces sólo van a poder ser accedidos desde el interior de la clase.
class Clase
{ enum Enumeracion1 {Negro, Blanco};
public:
enum Enumeracion2 {Abierto, Cerrado};
struct {
char Caracter;
int Numero;
} Datos;
};
void main(void)
{ int N;
Clase Objeto;
N=Clase::Abierto; // Dos formas de acceder a lo mismo
N=Objeto.Abierto;
N=Objeto.Datos.Caracter;
}
Un Truco Útil dentro de Otros Conceptos
En algunos compiladores como Borland C++ no existen plantillas o templates
, con el consiguiente problema de que hay que crearse una clase para cada tipo. Sin embargo, para solucionar este problema y no tener que hacer algo así, podemos hacer uso de los llamados toren-pasting
. Para conocer más del mundo de la programacion puede ir al siguiente sitio web. Y si deseas otras fuentes, puedes visitar wikipedia