????????????
?????????????????????????????????????????????????????????????????????μ??ò???????????????ν???????????
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????д?:
class Animal
{
public :
void shout() { cout << "????????????" << endl; };
};
class Dog
{
public:
void shout(){ cout << "?????"<<endl; }
};
class Cat
{
public:
void shout(){ cout << "????~"<<endl; }
};
class Bird
{
public:
void shout(){ cout << "???!"<<endl; }
};
template <typename T>
void  animalShout(T & t)
{
t.shout();
}
int main()
{
Animal anim;
Dog dog;
Cat cat;
Bird bird;
animalShout(anim);
animalShout(dog);
animalShout(cat);
animalShout(bird);
getchar();
}
??????????????????????t.shout()??????????????????????????????????????????????????????????shout??????????????????????????????ò?????????????????????????????????????????????????????????????????????????á?
?????????????????????????????
???????????????
????OO???????????????????????????????
??????????????????????μ??????????
???????????????
???????????????麯?????????????????п?????
???????????в?Σ?????????????????в?Ρ?
?????????麯????????????????????????????????麯???????????
???????????????????????????????????麯????????????????????????????????????????????е??????
???????????????
????????????????????????C++??з???????STL???????????????
???????????????????????????Ч???
???????к???????????????????????????????????????????????????????
???????????????
???????????????????????????????
????????????????????????????????????????С??
?????????????????????
??????????????????????
??????ν??????????????в???ж??????????????????????????????????????????????????????????.????????????????????????
????void AnimalShot(Animal & anim)
????{
????anim.shout();
????}
?????????shout??????????????????????е????????????
?????????????????????????????????????Ч?????????磺
????template <typename T>
????void AnimalShot(T & anim)
????{
????anim.shout();
????}
????????anim??????????????????????????????????anim??????????????????????????????У?T???????shout()?????????shout??T????????????