मैंने बहुत से लोगों को पढ़ा है "एक वर्चुअल टेबल उस वर्ग के लिए मौजूद है जिसमें वर्चुअल फ़ंक्शन घोषित किया गया है"।वर्चुअल टेबल सी ++
मेरा प्रश्न है, क्या एक vtable केवल उस वर्ग के लिए मौजूद है जिसमें वर्चुअल फ़ंक्शन है या यह उस वर्ग से प्राप्त कक्षाओं के लिए भी मौजूद है।
, उदा,
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();
प्रश्न: ली गई तो उत्पादन नहीं किया गया होगा "व्युत्पन्न प्रिंट" वर्ग के लिए कोई vtable वहाँ गया था। तो आईएमओ किसी भी वर्ग के लिए एक vtable मौजूद है जिसमें वर्चुअल फ़ंक्शन घोषित किया गया है और उस वर्ग से विरासत में प्राप्त कक्षाओं में भी। क्या ये सही है ?
प्रयोग को पूरा करने के लिए, क्लास व्युत्पन्न 2 बनाएं जो व्युत्पन्न से प्राप्त होता है और प्रिंट को ओवरराइड करता है। आधार पर पॉइंटर के माध्यम से इस तरह के एक उदाहरण पर प्रिंट प्रिंट करें ... – VoidPointer
लिंक के नीचे Vtable @ के बारे में और जानें: http://www.learncpp.com/cpp-tutorial/125-the-virtual-table/ –