3 Polymorphic classes

This is the more interesting case. How do we handle polymorphic classes? First, let us write some sample code in listing 3.


Listing 3:Polymorphicclasses.
 
1class X 
2{ 
3  public
4    int n; 
5    virtual void m1(void); 
6    virtual void m2(void); 
7}
8 
9class Y : public X 
10{ 
11  public
12    int m; 
13    virtual void m2(void); 
14    virtual void m3(void); 
15}
16 
17void test(void
18{ 
19  X myX; 
20  Y myY; 
21  X *pX; 
22  Y *pY; 
23 
24  myX.m1(); 
25  myY.m1(); 
26  myY.m2(); 
27  pX = static_cast<*>(&myY); 
28  pX>m1(); 
29  pX>m2(); 
30  pY = dynamic_cast<*>(pX) 
31  if (pY) pY>m3(); 
32}

 3.1 C equivalent code
  3.1.1 vtable
  3.1.2 The structs
  3.1.3 pVtable initialization
  3.1.4 Regular virtual method invocation
  3.1.5 Inherited virtual method invocation
  3.1.6 Static up cast
  3.1.7 Sticky methods from a superclass pointer
  3.1.8 Dynamic down cast
  3.1.9 Method invocation via pointer
  3.1.10 Making the compiler happy
 3.2 How about multiple inheritance?
 3.3 How about multilevel inheritance?