0
#include<iostream>
using namespace std;
class grandparent
{
        public:
        int x;
};

class parent1 :  virtual public grandparent
{
        public:
        int y;
};

class parent2 :  virtual public grandparent
{
        public:
        int z;
};

class child : public parent1, public parent2
{

};
int main()
{
        child obj;

        cout<<sizeof(obj)<<endl;

}

Output: 20

  #include<iostream>
    using namespace std;
    class grandparent
    {
            public:
            int x;
    };

    class parent1 :   public grandparent
    {
            public:
            int y;
    };

    class parent2 :   public grandparent
    {
            public:
            int z;
    };

    class child : public parent1, public parent2
    {

    };
    int main()
    {
            child obj;

            cout<<sizeof(obj)<<endl;

    }

Output: 16

When parent1 and parent2 inherited without virtual then I got object size of child is 16? but when parent1 and parent2 inherited with virtual then why I got size of child 20 instead of 12?s

0 Answers0