???????
??????C++?????????????“?????C”?????????????????????????????????????????????з??????????????STL??C++??????????????????????????C++????У??????OO???????????????????????????????????????????????????У????????template(???)??????????????????????????????????????У????????????????????????????У?????????
????????????????
???????????????
??????????????????
????????????
???????????????????????????????????????????????????????????????????????????????????е??????????????н???Щ?????????????????麯????????????????л??????д??Щ?????????????????е???幦??????????????????????????

class Animal
{
public :
virtual void shout() = 0;
};
class Dog :public Animal
{
public:
virtual void shout(){ cout << "?????"<<endl; }
};
class Cat :public Animal
{
public:
virtual void shout(){ cout << "????~"<<endl; }
};
class Bird : public Animal
{
public:
virtual void shout(){ cout << "???!"<<endl; }
};
int main()
{
Animal * anim1 = new Dog;
Animal * anim2 = new Cat;
Animal * anim3 = new Bird;
//???????????????????????????????????????????????????????????????????????????
anim1->shout();
anim2->shout();
anim3->shout();
//delete ????
...
return 0;
}
????????????????????????麯?????????????????????麯???????????????????????????麯???????????????????????麯??????麯?????д?????????麯??????????????????麯??????????麯?????????????麯????????????
??????????????????????????????????????????????
//?????и????????????????????
int main()
{
vector<Animal*>anims;
Animal * anim1 = new Dog;
Animal * anim2 = new Cat;
Animal * anim3 = new Bird;
Animal * anim4 = new Dog;
Animal * anim5 = new Cat;
Animal * anim6 = new Bird;
//????????????
anims.push_back(anim1);
anims.push_back(anim2);
anims.push_back(anim3);
anims.push_back(anim4);
anims.push_back(anim5);
anims.push_back(anim6);
for (auto & i : anims)
{
i->shout();
}
//delete????
//...
return 0;
}
???????????????????麯??????????????