C++ | Virtual Functions | Question 13

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <iostream>
using namespace std;
   
class A
{
public:
    virtual void fun() { cout << "A::fun() "; }
};
   
class B: public A
{
public:
   void fun() { cout << "B::fun() "; }
};
   
class C: public B
{
public:
   void fun() { cout << "C::fun() "; }
};
   
int main()
{
    B *bp = new C;
    bp->fun();
    return 0;
}

chevron_right


(A) A::fun()
(B) B::fun()
(C) C::fun()


Answer: (C)

Explanation: The important thing to note here is B::fun() is virtual even if we have not uses virtual keyword with it.

When a class has a virtual function, functions with same signature in all descendant classes automatically become virtual. We don’t need to use virtual keyword in declaration of fun() in B and C. They are anyways virtual.

Quiz of this Question

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up