簡體   English   中英

如何在C ++中使用虛函數實現多態行為?

[英]How to use virtual functions to achieve a polymorphic behavior in 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!” -那是牛。 那是多態性。

您還應該檢查c ++中的多態性

如果您正在尋找好的書籍,那么這里是'em的很好的清單: The Definitive C ++ Book Guide and List

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM