繁体   English   中英

通过其方法的子集实现接口

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM