我有一个带有两种方法的C ++接口。实现此接口的任何类都需要实现两个方法中的至少一个,但可以定义它们。然而,没有必要定义两者。在这种情况下使用的最佳模式是什么?
答案 0 :(得分:0)
如下所示:
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
};
答案 1 :(得分:0)
恕我直言,这个问题已经错了,也是它所基于的课程。
案例A: 类具有给定方法的定义。基础实现应该提供可预期的行为。在这种情况下,您可以自由覆盖它。
案例B: 该方法是抽象的,因此您必须以可预期的方式覆盖它,否则编译器不会编译。
无法申报"请覆盖其中一个或两个"在C ++中。给出的一类,预计会是(非常)糟糕的设计。
所以问题不存在。如果它存在,则无法用更多细节回答它,因为它取决于上下文。