"Sanal bir işlevin içinde bildirilen bir sınıf için sanal bir tablo var" yazan birçok insan okurum.Sanal Tablo C++
Sorum şu ki, sanal bir işlevi olan veya o sınıftan türetilen sınıflar için de geçerli olan bir sınıf için geçerli bir vtable var.
örneğin
class Base{
public:
virtual void print(){cout<<"Base Print\n";}
};
class Derived:public Base{
public:
void print(){cout<<"Derived print\n";}
};
//From main.cpp
Base* b = new Derived;
b->print();
Soru: Sonra çıkış olmazdı "türetilmiş baskı" türetilmiş sınıf için hiçbir vtable orada olsaydı. Dolayısıyla IMO, sanal işlevi bildirilen herhangi bir sınıf için ve aynı zamanda bu sınıftan miras kalan sınıflar için bir vtable var. Bu doğru mu ?
Denemeyi tamamlamak için, türetilmiş ve aynı zamanda geçersiz kılmayı geçersiz kılan sınıf türetilmiş2 oluşturun. Böyle bir örnek üzerinde bir işaretçi tabanını temel almak için çağrı yapın ... – VoidPointer
Daha fazla bilgi Vtable @ aşağıdaki Link hakkında: http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ –