我有一个班级CGrandMother
,其公共方法virtual bool Compute()
可以
virtual bool Compute()
{
return false;
}
来自CGrandMother
的{{1}}公开CMother
未实现Compute
。现在CMother
公开C1
和C2
来实现virtual bool Compute()
。现在virtual bool C1::Compute()
和virtual bool C2::Compute()
分别为C1
和C2
做了很多适当的事情,但也有很多相同的内容适用于CMother
。现在有一个类CFamily
作为成员指向CMother
,并且代码Compute
中几乎所有地方都通过表单行调用
ptrCMother->Compute();
我如何分析与CMother
和C1
中完成的C2
相关的常见内容,以便我不必更改所有ptrCMother->Compute();
行?< / p>
答案 0 :(得分:2)
答案应该非常简单。你说“很多相同的东西适合CMother”。因此,您应该将它们分解为CMother的成员函数。由于看起来只有从CMother派生的类才需要该功能,因此您应该将新成员函数标记为“protected”。 @ 0x5453所说的是单向的;但我建议使用一个新函数,以便单独留下公共方法CMother :: Compute。可能有另一个CMother的子类没有实现Compute并依赖CMother :: Compute来做某些事情。