[C con Clase] Metodos de clase y metodos de instancia, diferencia
Steven R. Davidson
vze266ft en verizon.net
Mar Nov 28 02:37:41 CET 2006
Hola Sergio,
Sergio Barcena wrote:
> Hola este es mi primer mensaje en la lista :), y a parte de querer
> felicitar a todos los que ayudan en ella pues queria preguntarles sobre
> una duda que tengo hace algun tiempo y que no termino de entender.
>
>
> Cual es la diferencia entre metodos de instancia y metodos de clase,
> tengo que reconocer que tengo un lio bastante grande con la programacion
> orietada a objetos y creo que hasta que no tenga clara esta filosofia de
> programacion no podre abancar.
>
Veamos. Una clase es un tipo, mientras que un objeto es una instancia de
una clase. Por ello, a veces se dice "instancia" para referirse a la
creación de un objeto o al objeto en sí. Algunos textos hablan de
métodos para referirse a funciones miembros de una clase.
Dicho lo anterior, los métodos de una instancia son aquellas funciones
miembros que son invocadas a través de un objeto de tal clase. Los
métodos de una clase son aquellas funciones que son invocadas
directamente mediante la clase. Bajo C++, hablamos de funciones miembros
estáticas en lugar de métodos de una clase. Por ejemplo,
class Algo
{
private:
double num;
public:
Algo( int a=0 ) : num(a) {}
double sumar( double a ) { return a+num; }
double numero() const { return num; }
static double pi();
};
double Algo::pi() { return 3.1415926535898; }
En los casos de 'sumar()' y 'numero()', estas funciones miembros deben
ser invocadas a través de un objeto de la clase 'Algo'. Por el otro
lado, la función estática 'pi()' ya se puede usar sin tener que crear un
objeto previamente. Por ejemplo,
int main()
{
Algo obj( 100.0 );
cout << obj.numero() << " + " << Algo::pi() << " = "
<< obj.sumar( Algo::pi() ) << endl;
return 0;
}
Espero haber aclarado la duda.
Steven
Más información sobre la lista de distribución Cconclase