#include <iostream>#include<vector>#include<string>using namespacestd;classparent{protected: stringpname; Public: Parent (stringname) {PName=name; } Virtual voidPrintname () {};};classChild: PublicParent {protected: stringcname; Public: Child (stringname):p arent (name) {CNAME=name; } Virtual voidPrintname () {cout<<"This is a child, the CNAME is"<< CNAME <<", PName is"<< pname <<Endl; }};classGrandchild: Publicchild{Private: stringGname; Public: Grandchild (stringname): Child (name) {Gname=name; } Virtual voidPrintname () {cout<<"Grandchild,gname is"<< Gname <<", CNAME is"<< CNAME <<", PName is"<< pname <<Endl; }};intMain () {stringName ="C"; Child child (name); Name="GC"; Grandchild Gchild (name); Vector<parent*>mlist; Mlist.push_back (dynamic_cast<parent*> (&Child )); Mlist.push_back (dynamic_cast<parent*> (&gchild)); for(inti =0; I < mlist.size (); i++) {Mlist[i]-Printname (); } return 0;}
Results:
C + + Inheritance instance