我对C++的这些重要功能很陌生,我已经在这里阅读了关于这些主题的一些问题/答案,并搜索了一些文档。但我仍然对此感到困惑......如何使用虚函数在C++中实现多态行为?
如果有人能为我提供一些很好的在线教程或书籍章节,这将使这个概念变得简单和缓慢,并从基本开始,这将是非常好的。
另外,如果有人知道一些现成的锻炼材料会很棒。
我对C++的这些重要功能很陌生,我已经在这里阅读了关于这些主题的一些问题/答案,并搜索了一些文档。但我仍然对此感到困惑......如何使用虚函数在C++中实现多态行为?
如果有人能为我提供一些很好的在线教程或书籍章节,这将使这个概念变得简单和缓慢,并从基本开始,这将是非常好的。
另外,如果有人知道一些现成的锻炼材料会很棒。
下面是我听说过的多态性最好的解释:
有许多动物在这个世界上。他们大多数发出声音:
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++
如果你正在寻找好的书,这里是“时间好名单:The Definitive C++ Book Guide and List
谢谢..当你说在Polymorphism上有大量可用的材料时,你会发现它。我更精确地看的是太了解它(即练习)。 – LivingThing 2012-02-13 12:15:05
@MuhammadSalman:在开始“试验”并练习之前,您应该了解基础知识。 – LihO 2012-02-13 12:16:45
这本书的问题是我没有太多时间在我的手上(至少现在),我不能尝试不同的书籍,看看我是否在寻找学习polymorpism。我需要阅读几本书的人的建议,在这本书中提供了关于多态性的最好和彻底的解释。 – LivingThing 2012-02-13 12:24:41
请参阅[C++的书单](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – MSalters 2012-02-13 11:54:31
试着看看这本书的名单http://stackoverflow.com/questions/388242/the-definitive-c-book-guide - 和 - 列表 – Damian 2012-02-13 11:54:50