2017-10-14 5 views
1

Je sais qu'une classe dérivée est une classe de base, donc vous pouvez toujours passer un objet dérivé à une fonction de membre de base. Maintenant, je m'interrogeais sur la situation inverse spécifiquement en comparant les opérateurs (la classe de base n'est pas abstraite et a des objets).Opérateur dérivé <recevant l'objet Base comme paramètre

Disons que j'ai:

class Base: 
{ 
    public: 
     Base(int m1, string m2); 
     virtual ~Base(); 
     int GetM1()const; 
     string GetM2()const; 

     virtual bool operator<(const Base& base)const; 

    private: 
     int m1; 
     string m2; 
}; 

Et je veux faire quelque chose comme ceci:

class Derived: public Base 
{ 
    public: 
    Derived(string member); 
    ~Derived(); 

    virtual bool operator<(const Base& base)const; // is this possible(without cast)??? 

}; 

Merci

+0

L'opérateur dérivé sera Utilisé quand vous faites 'someDerivedObject Barmar

Répondre

2

Oui, il est possible. Le Derived opererator sera utilisé dans le code comme ceci:

Base b; 
Derived d; 
if (d < b) { 
    ... 
} 

Vous pourriez aussi avoir une autre classe dérivée de Base, comme Derived1, et il sera utilisé:

Derived1 d1; 
Derived d; 
if (d < d1) { 
    ... 
}