[C++] Polymorphism

/*(base)A->B->C->D(derived)
 B* b=new C;
 A* a=b; //OK

 A* a=new D;
 A* a=new B; //next line will return NULL
 C* c=dynamic_cast<C*>(a); //OK
*/
#include<iostream>

using namespace std;
class instrument
{
    public:
    virtual void play()=0;
};
class guitar:public instrument
{
    public:
    void play()
    {
        cout<<"Guitar played.\n";
    }
};
class piano:public instrument
{
    public:
    void play()
    {
     cout<<"Piano played.\n";
    }
};
int main()
{
    instrument *s=new guitar;
    //Guitar played
    s->play();
    delete s;
    //Piano played
    s=new piano;
    s->play();
    delete s;
    return 0;
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *