Open In App

C++ | Inheritance | Question 3

Like Article
Like
Save
Share
Report

Assume that an integer takes 4 bytes and there is no alignment in following classes, predict the output.




#include<iostream>
using namespace std;
  
class base {
    int arr[10];
};
  
class b1: public base { };
  
class b2: public base { };
  
class derived: public b1, public b2 {};
  
int main(void)
{
  cout << sizeof(derived);
  return 0;
}


(A) 40
(B) 80
(C) 0
(D) 4


Answer: (B)

Explanation: Since b1 and b2 both inherit from class base, two copies of class base are there in class derived. This kind of inheritance without virtual causes wastage of space and ambiguities. virtual base classes are used to save space and avoid ambiguities in such cases. For example, following program prints 48. 8 extra bytes are for bookkeeping information stored by the compiler (See this for details)

#include<iostream>
using namespace std;
 
class base {
  int arr[10];     
};
 
class b1: virtual public base { };
 
class b2: virtual public base { };
 
class derived: public b1, public b2 {};
 
int main(void)
{ 
  cout << sizeof(derived);
  return 0;
} 


Quiz of this Question


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