Question
Option 4 : B
Detailed Solution
सही उत्तर B है।
Question:
Trace the C++ program below and state what it prints. #include <iostream> using namespace std; class A{ public: virtual void f(){ cout<<"A"; } }; class B : public A{ public: void f(){ cout<<"B"; } }; int main(){ A* p = new B(); p->f(); delete p; return 0; } / नीचे दिए गए C++ प्रोग्राम का अनुसरण करके बताइए कि वह क्या प्रिंट करता है। #include <iostream> using namespace std; class A{ public: virtual void f(){ cout<<"A"; } }; class B : public A{ public: void f(){ cout<<"B"; } }; int main(){ A* p = new B(); p->f(); delete p; return 0; }
Correct Answer: B
Because f() is declared virtual in A, the call through the base-class pointer is resolved at run time to the most-derived override, so B::f() runs and prints "B". / चूँकि f() A में virtual घोषित है, बेस-क्लास पॉइंटर से कॉल रन टाइम पर सबसे-व्युत्पन्न ओवरराइड से जुड़ता है, अतः B::f() चलता है और "B" प्रिंट होता है।