[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