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