如何使用虚函数实现C语言中的多态行为?
作者:互联网
我是C的这些重要功能的新手,我已经在这里阅读了有关这些主题的一些问题/答案,并在Google上搜索了一些文档.但是我仍然对此感到困惑…
如果有人可以建议我一些不错的在线教程或书籍章节,这将使这些概念变得简单而又缓慢,并从基础开始,那将是很好的.
另外,如果有人知道一些手边的练习材料,那就太好了.
解决方法:
这是我听过的关于多态性的最佳解释:
这个世界上有很多动物.他们中的大多数人会发出一些声音:
class Animal
{
public:
virtual void throwAgainstWall() { };
};
class Cat : public Animal
{
public:
void throwAgainstWall(){ cout << "MEOW!" << endl; }
};
class Cow : public Animal
{
public:
void throwAgainstWall(){ cout << "MOOO!" << endl; }
};
现在,假设您有一个巨大的动物包,而看不到它们.您只需抓住其中一个并将其扔在墙上.然后,您会听到它的声音-告诉您它是哪种动物:
set<Animal*> bagWithAnimals;
bagWithAnimals.insert(new Cat);
bagWithAnimals.insert(new Cow);
Animal* someAnimal = *(bagWithAnimals.begin());
someAnimal->throwAgainstWall();
someAnimal = *(bagWithAnimals.rbegin());
someAnimal->throwAgainstWall();
您抓住第一个动物,将它扔在墙上,您会听到“喵!” -是的,那是猫.然后抓起下一个,扔掉,听到“ MOOO!” -那是牛.那是多态性.
您还应该检查Polymorphism in c++
如果您正在寻找好书,这是’em的好清单:The Definitive C++ Book Guide and List
标签:c,pointers,polymorphism,virtual-functions 来源: https://codeday.me/bug/20191013/1905037.html