嘿,所以如果我有一个Base类和2个派生类...
class Base
{
virtual void Output()
{
cout << "OUTPUTTING A BASE OBJECT" << endl;
}
};
class Derived : public Base
{
void Ouput()
{
cout << "OUTPUTTING A DERIVED" << endl;
}
};
class OtherDerived : public Base
{
};
Run Code Online (Sandbox Code Playgroud)
据我了解,如果我尝试从OtherDerived调用Output,它将失败.有没有办法覆盖Base的某些派生版本的输出而不是其他的?
Eli*_*sky 10
调用类的Output对象OtherDerived失败不是因为它是虚拟的,而是因为它是声明private的Base(很明显没有 - 但是private在没有指定其他内容的情况下是类中的默认值)
将声明更改Base为:
class Base
{
public:
virtual void Output()
{
cout << "OUTPUTTING A BASE OBJECT" << endl;
}
};
Run Code Online (Sandbox Code Playgroud)
这将有效.protected也会工作.由于Output它不是纯虚拟的,因此可以从不覆盖它的子类调用它.
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |