[英]Declaring an interface with methods which has parameters of classes implementing the interface
[英]Implementing an interface through a subset of its methods
我有两种方法的C ++接口。 任何实现此接口的类都需要实现这两种方法中的至少一种,但可以同时定义这两种方法。 但是,不必同时定义两者。 在这种情况下使用的最佳模式是什么?
如下所示:
class MyInterface
{
public:
virtual ~MyInterface() {}
virtual void foo() = 0;
virtual void bar() = 0;
};
class MyAbstractClass : public MyInterface
{
public:
virtual ~MyAbstractClass();
// Provide implementation for foo or bar
virtual void foo() override { }
virtual void bar() override { }
};
class MyNewClass : public MyAbstractClass
{
// Implement either of foo or bar or can be both
};
恕我直言,这个问题已经是错误的,并且它是基于的类。
案例A:一个类具有给定方法的定义。 基本实现应提供预期的行为。 在这种情况下,您可以随意覆盖或不覆盖它。
情况B:该方法是抽象的,因此您必须以预期的方式覆盖它,否则编译器将无法编译。
在C ++中无法声明“请覆盖一个或两个”。 给定一个期望的类是(非常)糟糕的设计。
所以这个问题不存在。 如果存在,则不可能更详细地回答它,因为它取决于上下文。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.