[C con Clase] Sobre POO

Steven Richard Davidson stevenrichard.davidson en gmail.com
Jue Ene 10 15:22:36 CET 2008


Hola rnapoles,

On Jan 10, 2008 2:17 PM,  <rnapoles en hlg.rimed.cu> wrote:
> Salu2 lista
>
> Mi duda es la siguiente.
>
> Supongamos que tenemos una clase X y esta
> cuenta con los metodos a,b,c,d,e  y  creo un objeto que solo usa
> a y b.
> cuando lo compilo el compilador me incluira la  clase con todos los metodos
> o solo incluira la clase con el codigo de los metodos que uso. Otra cosa

Si nos centramos en C++ y no estamos hablando de plantillas, entonces
la respuesta es que todos los métodos son compilados. Bajo C++, las
funciones miembros son funciones definidas con el primer parámetro
como un puntero a la clase a la que pertenece. Por ejemplo,

class A
{
  int f();
  void g( int, double * );
};

El compilador realmente reescribe lo anterior a lo siguiente:

int Zp_f en 4( A *this );
void Zpip_g en 12( A *this, int, double * );

Como puedes ver, los nombres de las funciones miembros son modificados
o "decorados". La decoración se basa en un algoritmo para codificar
información acerca de las funciones. Cada compilador decorará o
codificará las funciones a su manera, por lo que el ejemplo anterior
es exactamente eso: un ejemplo.

> existe alguna forma de saber o medir el rendimiento de un programa
> o una funcion especifica.
>

Típicamente, uno suele hacer un análisis del algoritmo tanto espacial
como temporal. Si necesitas hacer algunas pruebas, podrías usar la
función estándar 'clock()', declarada en <ctime>, anterior y posterior
a la llamada de tal función. Por ejemplo,

X obj;
clock_t comienzo = clock();
obj.a();
double tiempo = (clock() - comienzo) / (double)CLOCKS_PER_SEC;

Si necesitas mayor precisión, tendrías que dirigirte a funciones no
estándares especializadas en tu plataforma y con soporte para tu
compilador.


Espero que esto te ayude.

Steven




Más información sobre la lista de distribución Cconclase