close

In programming languages, polymorphism means that some code or operations or objects behave differently in different contexts.

For example, the + (plus) operator in C++:

4 + 5       <-- integer addition
3.14 + 2.0  <-- floating point addition
s1 + "bar"  <-- string concatenation!

In C++, that type of polymorphism is called overloading.

Typically, when the term polymorphism is used with C++, however, it refers to using virtual methods, which we'll discuss shortly.

 

Assume we have Employee class , Manager class  , and programmer class.

and the Manager class inheritance from Employee class.

Intuition , we know the a manager is also a employee , but a employee can not be a manager .

so if we create a Employee object , this employee may be manager or programmer  ,

so we can assign this object to manager or programmer , 

but in the contrast , we can not assign a manager object to employee , because not all emplyees are managers.

This is the concept of polymotphism.

 

class Base
{
protected:
    int m_nValue;
 
public:
    Base(int nValue)
        : m_nValue(nValue)
    {
    }
 
    const char* GetName() { return "Base"; }
    int GetValue() { return m_nValue; }
};
 
class Derived: public Base
{
public:
    Derived(int nValue)
        : Base(nValue)
    {
    }
 
    const char* GetName() { return "Derived"; }
    int GetValueDoubled() { return m_nValue * 2; }
};

int main()
{
    using namespace std;
    Derived cDerived(5);
 
    // These are both legal!
    Base &rBase = cDerived;
    Base *pBase = &cDerived;
 
    cout << "cDerived is a " << cDerived.GetName() << " and has value " << cDerived.GetValue() << endl;
    cout << "rBase is a " << rBase.GetName() << " and has value " << rBase.GetValue() << endl;
    cout << "pBase is a " << pBase->GetName() << " and has value " << pBase->GetValue() << endl;
 
    return 0;
}
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 JerryCheng 的頭像
    JerryCheng

    KwCheng's blog

    JerryCheng 發表在 痞客邦 留言(0) 人氣()