> 
> Here is the code
>  ,it is my homework using overriden methods teacher told us to analyze the code. I know the code is outputting 2, I have no clue how this code work.
> 
> 
> 

```
public:
   int a;
   virtual void who(void) { a = 1; }
};

class B:public A{
public:
   int a;
   void who(void) { a = 2; }
};

class C :public B {
};

int main(void) {
   A x; B y; C z; A *p;
   p = &z;
   p->who();
   cout << z.a << endl;
       system("pause");
       return 0;
}

```