Open In App
Related Articles

C++ | Virtual Functions | Question 13

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report
#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;
}

                    
(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

Last Updated : 28 Jun, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads