这是在C ++中:
假设我有一个Control
类,它有虚拟方法并且有两个实现,一个是Windows,一个是Linux。使用CreateControl()
方法,我创建了ControlWindows
或ControlLinux
,它是Windows或Linux实现。
我还有一个继承自Button
的{{1}}类,而Control
也有两个实现。
这是一个简单的图表:
但是,在Button
类中,我需要例如访问ButtonWindows
类中定义的方法和成员,但如果不直接从ControlWindows
继承并因此具有多重继承,则无法执行此操作设计。然后我会有ControlWindows
类的多个成员实例。
可以通过使用虚拟继承来解决,但是如果可能的话,这会产生性能影响。