के विज़ुअल सी ++ 2010 में इस परिदृश्य मान लेते हैं:अधिभावी गैर आभासी तरीकों
#include <iostream>
#include <conio.h>
using namespace std;
class Base
{
public:
int b;
void Display()
{
cout<<"Base: Non-virtual display."<<endl;
};
virtual void vDisplay()
{
cout<<"Base: Virtual display."<<endl;
};
};
class Derived : public Base
{
public:
int d;
void Display()
{
cout<<"Derived: Non-virtual display."<<endl;
};
virtual void vDisplay()
{
cout<<"Derived: Virtual display."<<endl;
};
};
int main()
{
Base ba;
Derived de;
ba.Display();
ba.vDisplay();
de.Display();
de.vDisplay();
_getch();
return 0;
};
सैद्धांतिक रूप से, इस छोटे से आवेदन के उत्पादन में किया जाना चाहिए:
- आधार: गैर आभासी प्रदर्शन।
- आधार: वर्चुअल डिस्प्ले।
- आधार: गैर-आभासी प्रदर्शन।
- व्युत्पन्न: वर्चुअल डिस्प्ले।
क्योंकि बेस क्लास का प्रदर्शन विधि वर्चुअल विधि नहीं है, इसलिए व्युत्पन्न वर्ग इसे ओवरराइड करने में सक्षम नहीं होना चाहिए। सही?
- आधार:: गैर आभासी प्रदर्शन
समस्या यह है कि जब मैं आवेदन चलाने के लिए, यह इस प्रिंट है।
- आधार: वर्चुअल डिस्प्ले।
- व्युत्पन्न: गैर-आभासी प्रदर्शन।
- व्युत्पन्न: वर्चुअल डिस्प्ले।
तो या तो मैं वर्चुअल विधियों की अवधारणा को समझ नहीं पाया या दृश्य सी ++ में कुछ अजीब होता है।
क्या कोई मुझे स्पष्टीकरण के साथ मदद कर सकता है?
आपके पास पूरी तरह से __ बेस: गैर वर्चुअल डिस्प्ले होगा .__ आपकी लाइन को 'de.Base :: Display() 'में बदलते समय। –