[C con Clase] Duda sobre performance de clases virtuales

Ferran Ferri ferranferri en gmail.com
Jue Oct 9 17:36:20 CEST 2008


Hola a todos de nuevo. Tengo una duda sobre el rendimiento de las clases
virtuales puras, es decir:

class A{
    virtual void foo() = 0;
}

Que se implementa en otra clase, justo igual que con las interfaces de java:

class B: public A{
    void foo(){
       std::cout << "hola, soy B" << std::endl;
    }
}

Mi pregunta es la siguiente. Si yo tengo este codigo:

A a = B();

En tiempo de ejecucion se crea una tabla de vPtr (virtaul pointers). Cada
vez que llame a a.foo(), se realiza la conversion para reconocer desde donde
viene la llamada? O solo durante la creacion de la clase. Por que si cada
vez que llamo a la funcion, el programa internamente tiene que conocer de
que tipo es, entonces en aplicaciones intensivas puede tener un rendimiento
sensiblemente peor, no es asi?

Muchas gracias
Ferran
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20081009/ebc7c98a/attachment.html>


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