派生算子<接收Base对象作为参数

时间:2017-10-14 06:11:39

标签: c++ inheritance

我知道派生类“是一个”基类,因此您始终可以将派生对象传递给基本成员函数。现在,我想知道具体的比较运算符的反向情况(基类不是抽象的并且有对象)。

让我说我有:

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

我想做这样的事情:

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

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

};

由于

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。 Derived opererator将在以下代码中使用:

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

您还可以使用Base派生的其他类,例如Derived1,并将使用它:

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