????C++???????????????????????????????????????????????????
????????????????????????????????????У????????????????????
??????????£?
#include <iostream>
#include <stdlib.h>
#include <vector>
using namespace std;
class Parent{
protected:
string pname;
public:
Parent(string name){
pname=name;
}
virtual void printName(){};
};
class Child: public Parent{
protected:
string cname;
public:
Child(string name):Parent(name){
cname=name;
}
virtual void printName(){
cout<<"This is child?? cname is "<<cname<<"?? pname is "<<pname<<endl;
}
};
class GrandChild: public Child{
private:
string gname;
public:
GrandChild(string name):Child(name){
gname=name;
}
virtual void printName(){
cout<<"This is grandchild?? gname is "<<gname<<"?? cname is "<<cname<<"?? pname is "<<pname<<endl;
}
};
int main(){
string name="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(int i=0;i<mlist.size();++i){
mlist[i]->printName();
}
}
????????????????????printName???????virtual?????????????????????……