2012-02-13 56 views
1

我對C++的這些重要功能很陌生,我已經在這裏閱讀了關於這些主題的一些問題/答案,並搜索了一些文檔。但我仍然對此感到困惑......如何使用虛函數在C++中實現多態行爲?

如果有人能爲我提供一些很好的在線教程或書籍章節,這將使這個概念變得簡單和緩慢,並從基本開始,這將是非常好的。

另外,如果有人知道一些現成的鍛鍊材料會很棒。

+0

請參閱[C++的書單](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – MSalters 2012-02-13 11:54:31

+0

試着看看這本書的名單http://stackoverflow.com/questions/388242/the-definitive-c-book-guide - 和 - 列表 – Damian 2012-02-13 11:54:50

回答

7

下面是我聽說過的多態性最好的解釋:

有許多動物在這個世界上。他們大多數發出聲音:

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

+0

謝謝..當你說在Polymorphism上有大量可用的材料時,你會發現它。我更精確地看的是太瞭解它(即練習)。 – LivingThing 2012-02-13 12:15:05

+0

@MuhammadSalman:在開始「試驗」並練習之前,您應該瞭解基礎知識。 – LihO 2012-02-13 12:16:45

+0

這本書的問題是我沒有太多時間在我的手上(至少現在),我不能嘗試不同的書籍,看看我是否在尋找學習polymorpism。我需要閱讀幾本書的人的建議,在這本書中提供了關於多態性的最好和徹底的解釋。 – LivingThing 2012-02-13 12:24:41