有没有办法调用基类函数,它在使用私有继承的派生类中被过度使用?

时间:2017-08-14 15:44:26

标签: c++ inheritance using

我正在浏览C ++中的继承概念,并尝试了这样的代码:

class base{
    public:
    void display(int j)
    {
        cout<<j<< " base "<<endl;
    }
};

class derived:private base{
    public:
    using base::display;
    void display(int k)
    {
        cout<<k<< " derived "<<endl;
    }
};

int main()
{
    derived obj;
    obj.display(10);
    //obj.base::display(46); --> cannot be used as base is privately inherited. Also conversion from derived to base cannot happen in this case.

    return 0;
}

在上面的例子中,有什么方法可以通过使用display从main调用基类obj函数?

如果基函数没有在派生类中过度使用,那么通过using(如果基函数在派生中隐藏了重载函数),我可以在派生中声明它并用派生它调用它班obj。但是在基于私有继承派生的基函数被过度使用的情况下,有没有办法调用基函数?

在我学习C ++的过程中,我只是想知道是否有办法做到这一点(无论是否有任何实际用例)。

2 个答案:

答案 0 :(得分:1)

不是直接的,因为基类中的函数在派生类中是私有的,并且使用声明在这里没有帮助。但是您可以使用不同的名称向派生类添加一个函数,该函数调用基函数。没有评论导致这种复杂性的设计问题。

答案 1 :(得分:-1)

使用虚函数概念可以访问私有继承的基类函数。 使用基类的指针对象并通过将指针对象指向基类对象并调用display()函数来访问继承的成员函数

相关问题