La mia domanda è con riferimento a this question che spiega come virtuale funzioni operano in caso di affettamento oggetto che finiscono per chiamare classe di base funzione virtuale e Wikipedia article che spiega il layout di tabella virtuale per una classe derivata per il sottostante codicefunzioni virtuali oggetto affettare
class A{
public:
virtual void func(){ cout<<"\n In A:func";}
};
class B:public A{
public:
virtual void func(){ cout<<"\n In B:func";}
};
main(){
A *ptr1 = new B();
A oA = *ptr1;
oA.func();
}
DerviedClassObjectB:
+0: pointer to virtual method table of B
virtual method table of B:
+0: B::func
Sopra le uscite del programma "In A :: func".
Ma come fa a meno tabella virtuale per la classe B sapere su classe di base A :: func finisce per chiamare A :: func