shouldnt it be 16....cz only one instance of base class gets included when
we use virtual keyword......

On Sun, Jul 3, 2011 at 2:54 PM, abc abc <[email protected]> wrote:

> In the second case , the size of vptr will be added to each and every
> object .
> 1st class = one int :4
> 2nd class = one int +one int from base + vptr =12
> 3rd class = one int + one int from base + vptr =12
> 4th class =one int from each base class + one int from each of the grand
> parent +one vptr =20
>
> On Sun, Jul 3, 2011 at 2:43 PM, himanshu kansal <
> [email protected]> wrote:
>
>> class Base
>> {
>>      public:
>>            int a;
>> };
>>
>> class X:  public Base
>> {
>>      public:
>>            int x;
>> };
>>
>> class Y:  public Base
>> {
>>      public:
>>            int y;
>> };
>>
>> class Z:public X,public Y
>> {
>> };
>>
>> int main()
>> {cout<<sizeof(Base)<<endl;
>> cout << sizeof(X) <<endl;
>> cout << sizeof(Y) <<endl;
>> cout << sizeof(Z) <<endl;
>> }
>> o/p is 4
>> 8
>> 8
>> 16...
>> which is absolutely fine.....
>>
>> but the problem arises here....
>> class Base
>> {
>>      public:
>>            int a;
>> };
>>
>> class X:virtual public Base
>> {
>>      public:
>>            int x;
>> };
>>
>> class Y:virtual public Base
>> {
>>      public:
>>            int y;
>> };
>>
>> class Z:public X,public Y
>> {
>> };
>>
>> int main()
>> {cout<<sizeof(Base)<<endl;
>> cout << sizeof(X) <<endl;
>> cout << sizeof(Y) <<endl;
>> cout << sizeof(Z) <<endl;
>> }
>>
>> o/p is 4
>> 12
>> 12
>> 20
>> why the size is 12 and 20 for x and Z....does this is because that
>> some sort of VPTR IS maintained in the class....if yes then then what
>> does that points to....
>>
>> PS:HERE.....i am talking about virtual inheritance....NOT ABOUT
>> "VIRTUAL FUNCTIONS"...
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>



-- 

      Regards
Himanshu Kansal
  Msc Comp. sc.
(University of Delhi)

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to