派生类中的方法重写使基类中的重载方法不可用

时间:2019-06-25 08:30:54

标签: c++ overriding overloading

class Base
{
public:
    virtual void SetValue(int v)
    {
        a = v;
    }

    void SetValue(std::string str)
    {
        b = str;
    }

    void SetValue(bool val)
    {
        c = val;
    }

private:
    int a;
    std::string b;
    bool c;

};


class Derived : public Base
{
public:
    virtual void SetValue(int v) override
    {
        //
    }
};




int main()
{

    Derived d;
    d.SetValue("string"); // cant use string as argument

}

在基类中,我有两个具有相同名称的方法以及一个具有相同名称的虚拟方法。如果我重写基类的SetValue虚方法,则在实例化派生类时,将无法使用基类的其他两个非虚方法。这是重载和覆盖方法的默认行为吗?

0 个答案:

没有答案