有没有办法调用基类函数,该函数在使用私有继承的派生类中被覆盖?
Is there a way to call base class function which is over-rided in its derived class that used private inheritance?
我正在浏览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;
}
在上面的情况下,有没有办法通过使用obj
从 main 调用基类display
函数?
如果基函数没有在派生类中被覆盖,那么通过using
(如果基函数在派生中被重载函数隐藏(,我可以在派生中声明它并使用派生类obj
调用它。但是在这种情况下,基函数被私有继承覆盖,有没有办法调用基函数?
当我学习C++时,我只是想知道是否有任何方法可以做到这一点(无论任何实际用例如何(。
不是直接的,因为基类中的函数在派生类中是私有的,并且使用声明在这里没有帮助。但是,您可以向派生类添加一个函数,该函数具有不同的名称,用于调用基函数。对导致这种复杂性的设计问题没有评论。
使用虚函数概念可以访问私下继承的基类函数。 使用基类的指针对象,通过将指针对象指向基类对象并调用 display(( 函数来访问继承的成员函数
相关文章:
- 大小虚拟继承中的派生类
- 继承时如何构建派生类的变量?
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 派生类是从基类继承 v 指针并仅使用它,还是也有自己的 v 指针?
- "std::shared_from_this"不能由其派生类继承吗?
- 继承的数据如何在派生类中放置(排列)?
- C++具有空派生类对象的继承大小
- C++ 继承:基类中重载 operator+ 的 2 次在派生类中无法正常工作
- 如何调用继承的重载运算符<<并在派生类的输出中添加更多文本?
- 在模板派生类中继承具有类型别名的构造函数
- C++继承从基类指针访问派生类中的非虚拟函数
- C++排除通过派生类中的基类继承的类
- 派生类调用使用非继承成员的继承函数
- 多重继承中的派生类的行为类似于聚合
- 在派生类中具有相同签名但继承为受保护的函数
- 继承:派生类的基类属性可访问性
- 继承派生的类构造函数
- 为C++中具有多个继承派生类的vtables的基之一调用赋值运算符
- 将抽象类(仅纯虚函数)的继承/派生限制到某个类
- 多重继承派生类:如何在不重复调用 base 的情况下重用派生函数