我正在浏览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 ++的过程中,我只是想知道是否有办法做到这一点(无论是否有任何实际用例)。
答案 0 :(得分:1)
不是直接的,因为基类中的函数在派生类中是私有的,并且使用声明在这里没有帮助。但是您可以使用不同的名称向派生类添加一个函数,该函数调用基函数。没有评论导致这种复杂性的设计问题。
答案 1 :(得分:-1)
使用虚函数概念可以访问私有继承的基类函数。 使用基类的指针对象并通过将指针对象指向基类对象并调用display()函数来访问继承的成员函数