1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

Output needs some explanation

Discussion in 'C' started by shabbir, Jul 19, 2005.

  1. shabbir

    shabbir Administrator Staff Member

    Can any one give any valid reason why the output of the following program in VC++ 6.0 Compiler is
    Code:
    #include <iostream>
    using namespace std;
    
    class base
    {
    public:
      int a;
      base(){ a=0;}
    };
    
    class der:public base
    {
    public:
      int b;
      der(){ b=1;}
    };
    void F(base *ptr,int n)
    {
      for(int i=0; i<n; i++,ptr++)
        cout<<ptr->a;
      cout<<endl;
    }
    
    int main()
    {
      base Base1[5];
      F(Base1,5);
      der Der1[5];
      F(Der1,5);
      return 0;
    }
    Output
    00000
    01010
     
  2. coderzone

    coderzone Super Moderator

    Hey very interesting problem. I will try this.
     
  3. coderzone

    coderzone Super Moderator

    The catch lies here

    for(int i=0; i<n; i++,ptr++)

    If you see there is a ptr ++ and ptr is always a base pointer and so the amount of values that are incremented at\re size of base and so once it prints a and then b and so the output is 01010
     

Share This Page