gpt4 book ai didi

C++ 接口(interface)类继承自具体类是否合理?

转载 作者:行者123 更新时间:2023-11-27 23:47:53 31 4
gpt4 key购买 nike

在 C++ 中,接口(interface)类继承具体类是否合理?这是不好的设计气味吗?

我有一个定义行为的接口(interface)和一个定义实现的继承类。

现在我有另一个类,我想声明“从这个类继承的人需要指定行为X,并定义这个已经有的行为Y一个有效的默认实现”

这种实现方式是否正确?我对这种抽象/具体的混合感到困惑。

class IBase
{
public:
virtual ~IBase(){}

virtual void method1() = 0;
}

class ConcreteBase : IBase
{
public:
ConcreteBase(){}

void method1() override { // some impl; }
}

class ISpecialized : ConcreteBase
{
public:
// Here I don't need virtual destructor

void method2() = 0;
}

class ConcreteSpecialized : ISpecialized
{
public:
ConcreteSpecialized(){}

void method2() override { // some impl. }
}

最佳答案

与其让 ISpecialized 扩展 IBase,不如考虑让它独立存在。然后您可以使用多重继承使您的具体类派生自这两个接口(interface)。

class ISpecialized
{
public:
~ISpecialized(){}

void method2() = 0;
}

class ConcreteSpecialized : ConcreteBase, ISpecialized
{
public:
ConcreteSpecialized(){}

void method2() override { // some impl. }
}

关于C++ 接口(interface)类继承自具体类是否合理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49115395/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com