2012-02-13 4 views
1

私はC++のこれらの重要な機能を新しくしています。私はすでにこれらのトピックに関するいくつかの質問/回答を読み、いくつかのドキュメントを探しました。しかし、私はまだこれと混同されています...仮想関数を使用してC++で多態性を実現する方法は?

この概念を簡単かつ低速で基本的なものから始めるいくつかの良いオンラインチュートリアルや本の章にアドバイスできれば素晴らしいと思います。

また、ある人が手持ちの運動材料をよく知っていれば、それは素晴らしいものです。

は、この世界では多くの動物があります

+0

[C++帳リスト]を参照してください(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – MSalters

+0

この本を見てみるhttp://stackoverflow.com/questions/388242/the-definitive-c-book-guide -and-list – Damian

答えて

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; } 
}; 

は今、あなたは動物と巨大な袋を持っており、あなたがそれらを見ることができない想像してみてください。あなたはそれらの1つをつかみ、それを壁に投げる。そして、あなたはその音を聞く - それはだった動物の種類を示しています:壁にそれを投げる、あなたが最初の動物をつかむ

set<Animal*> bagWithAnimals; 
bagWithAnimals.insert(new Cat); 
bagWithAnimals.insert(new Cow); 

Animal* someAnimal = *(bagWithAnimals.begin()); 
someAnimal->throwAgainstWall(); 

someAnimal = *(bagWithAnimals.rbegin()); 
someAnimal->throwAgainstWall(); 

、あなたは「MEOW!」を聞きます - うん、それは猫だった。それから、あなたは次のものをつかんで、それを投げると、あなたは "MOOO!" - それは牛だった。それは多型です。

あなたはまた、Polymorphism in c++

をチェックする必要がありますそして、あなたは良い本を探している場合は、ここでは「日の良いリストです:The Definitive C++ Book Guide and List

+0

ありがとうございます。あなたは、多態性に利用できる膨大な量の物質があると言います。私がもっと正確に見ていることは、やってもそれを学ぶことです(つまり、運動)。 – LivingThing

+0

@MuhammadSalman: "実験"を開始して練習する前に、基本を理解する必要があります。 – LihO

+0

本の問題は、私は自分の手に(多くの場合今)多くの時間を費やしていないことと、それが私が多様性を学ぶために探しているものかどうかを調べるために、別の本を試すことができないということです。いくつかの本を読んだ人からアドバイスが必要です。この本では、多形に関する最良の完全な説明が提供されています。 – LivingThing

関連する問題