Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

C++ | Virtual Functions | Question 13

  • Difficulty Level : Hard
  • Last Updated : 28 Jun, 2021

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

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!