Prendendo il seguente frammento come un esempio:costi eredità in C++
struct Foo
{
typedef int type;
};
class Bar : private Foo
{
};
class Baz
{
};
Come si può vedere, non funzioni virtuali esistono in questo rapporto. Dal momento che questo è il caso, sono le seguenti ipotesi accurate per quanto riguarda la lingua?
- Nessuna tabella di funzioni virtuali verrà creata in
Bar
. sizeof(Bar) == sizeof(Baz)
In sostanza, sto cercando di capire se sarò pagando alcun tipo di sanzione per fare questo. Il mio test iniziale (anche se su un singolo compilatore) indica che le mie asserzioni sono valide, ma non sono sicuro che questo sia l'ottimizzatore del mio compilatore o la specifica della lingua che è responsabile di ciò che sto vedendo.
+1 per la vostra curiosità e curiosità. –