C++ | Virtual Functions | Question 12
Predict the output of following C++ program. Assume that there is no alignment and a typical implementation of virtual functions is done by the compiler.
#include <iostream> using namespace std; class A { public : virtual void fun(); }; class B { public : void fun(); }; int main() { int a = sizeof (A), b = sizeof (B); if (a == b) cout << "a == b" ; else if (a > b) cout << "a > b" ; else cout << "a < b" ; return 0; } |
(A) a > b
(B) a == b
(C) a < b
(D) Compiler Error
Answer: (A)
Explanation: Class A has a VPTR which is not there in class B.
In a typical implementation of virtual functions, compiler places a VPTR with every object. Compiler secretly adds some code in every constructor to this.
Please Login to comment...