[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