簡體   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