Igo*_*Oks 22 c++ oop virtual inheritance overriding
假设我在B类中有虚函数foo(),我需要在B的派生类之一D类中略有不同的行为.可以创建重写函数D :: foo(),并调用B :: foo( )从那里,经过特殊情况处理?像这样:
void D::foo()
{
if (/*something*/)
// do something
else
B::foo();
}
Run Code Online (Sandbox Code Playgroud)
我不是在问这是否会奏效,我知道会这样.我想知道,对于一个好的OOD来说它是否正确.
Gor*_*pik 20
这非常好.实际上,执行某些操作的规范方法是调用基类方法,然后执行任何操作(或者反过来).我在想operator=这里.构造函数通常也以这种方式工作,即使在初始化列表中有点伪装.